home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / THINK C Digest / 1992 / 92-08 < prev    next >
Text File  |  1995-12-31  |  167KB  |  4,542 lines

  1. 
  2. Path: ucivax!gateway
  3. From: taihou@iss.nus.sg (Tng Tai Hou)
  4. Subject: Re:  Smooth Animation & GNE/WNE - Is it possible?
  5. Message-ID: <9208010228.AA16972@iss.nus.sg>
  6. Newsgroups: fa.think-c
  7. Lines: 7
  8. Date: 1 Aug 92 02:27:06 GMT
  9.  
  10. This great. Please post your code and summaries.
  11. It would help the net a great deal.
  12.  
  13. Thanks.
  14.  
  15. Tai Hou
  16. Singapore
  17. 
  18. 
  19. Path: ucivax!gateway
  20. From: k044477@hobbes.kzoo.edu ("Jamie R. McCarthy")
  21. Subject: Re: Smooth Animation & GNE/WNE - Is it possible?
  22. Message-ID: <9208011646.AA02171@hobbes.kzoo.edu>
  23. In-Reply-To: <9207312057.AA23327@kona.cs.ucla.edu>; from "Tom Johnson" at Jul 31, 92 8:57 pm
  24. X-Mailer: ELM [version 2.3 PL11]
  25. Newsgroups: fa.think-c
  26. Lines: 60
  27. Date: 1 Aug 92 16:44:39 GMT
  28.  
  29. > I've got the drawing sync'd to a VBL task and everything works great in a
  30. > situation like this:
  31. >
  32. >   do {
  33. >         DrawNextFrame();
  34. >      } while (!Button());
  35. >
  36. > of course.  But when I put it into a real event loop:
  37. > [code removed]
  38. > I get all sorts of little starts/stops/pauses in the animation, as the mac
  39. > gives time to background processes.  And it's certainly not acceptable for
  40. > a fast arcade-style game.
  41. >
  42. > How do other game authors handle it?  Do you not give time to bkgnd processes?
  43. > Just let downloads timeout?  Or is there some simple idea that's gone by
  44. > me completely?
  45.  
  46. Well, there's no easy way around it.  If you need ten minutes of solidly
  47. smooth animation at a constant 20 fps, then you're simply not going to
  48. be able to call WNE.
  49.  
  50. However, there can be ways around it if your requirements are a little
  51. less stringent.  And it's very nice to know that downloads can go on
  52. while playing, so giving time to background processes _is_ a goal worth
  53. striving for.
  54.  
  55. Start from the assumption that your game takes priority, and work your
  56. way towards being polite.  The first step is to not call WNE every time
  57. through the event loop.  There's no reason to call it more frequently
  58. than ten times a second.  And you can probably do just fine calling it
  59. only once or twice a second.
  60.  
  61. (Keep in mind, though, that WNE only gives time to _one_ background
  62. process at a time.  The worst-case scenario would be when the user has
  63. twenty apps running, one of which is downloading with Kermit (which
  64. requires confirmation after each send) in 128-byte packets.  If you call
  65. WNE once a second, the download will proceed at 128 bytes every twenty
  66. seconds.)
  67.  
  68. My animation, for example, doesn't have a constant frame rate.  I've set
  69. it up to hog the CPU whenever an frame needs to be displayed within the
  70. next two ticks, and to drop into the main event loop whenever the next
  71. frame is three or more ticks away.  There's also an override, so that it
  72. will never go more than n seconds without dropping into the main event
  73. loop.  (I have n set at 3, but it doesn't work well for 5-second video
  74. clips.  I think I'm going to change it so that it will initially go for
  75. ten seconds without calling WNE, and then require the call every three.)
  76.  
  77. > This is just a little throw away freeware
  78. > game, so I'm trying to get as much done as I can as quickly as possible. Has
  79. > anyone ever written a sample arcade game and given away the source? Something
  80. > I could base mine upon?
  81.  
  82. Ingemar Ragnemalm has written a Sprite Animation Toolkit that was in
  83. preliminary testing last I knew.  You might want to contact him and get
  84. ahold of it.
  85. --
  86.  Jamie McCarthy      Internet: k044477@kzoo.edu      AppleLink: j.mccarthy
  87.  The essence of OOP:  "After some hacking, I finally got the program to
  88.  work, but I'm still not sure why."  - David Marcovitz (marcovitz@uiuc.edu)
  89. 
  90. 
  91. Path: ucivax!gateway
  92. From: de19@umail.umd.edu (Dana S Emery)
  93. Subject: Re: Smooth Animation & GNE/WNE - Is it possible?
  94. Message-ID: <Mailstrom.B54.38003.15089.de19@umail.umd.edu>
  95. In-Reply-To: Your message <9208011646.AA02171@hobbes.kzoo.edu> of 1 Aug 92
  96.  16:44:39 GMT
  97. Content-Type: TEXT/plain; charset=US-ASCII
  98. Newsgroups: fa.think-c
  99. Lines: 13
  100. Date: 1 Aug 92 23:20:08 GMT
  101.  
  102. Rather than make presumptions about what the user wants you to do, why not give
  103. the user a chance for some input? decide on a strategy for moderating your games
  104. hogishness, and have a preference dialog for its parameters.
  105.  
  106. You really cant outguess what your users will prefer here, some will want to
  107. game at full bore, others might be killing time during some other lengthy but
  108. critical task.
  109.  
  110. The studly app wins reviews and influences buyers when it shows such
  111. flexibility.
  112.  
  113. Dana S Emery <de19@umail.umd.edu>
  114.  
  115. 
  116. 
  117. Path: ucivax!gateway
  118. From: tj@cs.ucla.edu (Tom Johnson)
  119. Subject: Re: Smooth Animation & GNE/WNE - Is it possible?
  120. Message-ID: <9208012115.AA10252@kona.cs.ucla.edu>
  121. In-Reply-To: <9208011646.AA02171@hobbes.kzoo.edu>; from "Jamie R. McCarthy" at Aug 1, 92 4:44 pm
  122. X-Mailer: ELM [version 2.3 PL11]
  123. Newsgroups: fa.think-c
  124. Lines: 16
  125. Date: 2 Aug 92 00:59:06 GMT
  126.  
  127. Hi Jamie-
  128.  
  129. This is going to be a fast arcade-type game, but I think I can throw in a
  130. WNE perhaps during explosions or something.  Thanks for your ideas.  I may
  131. have some more questions about your method, when I'm thinking a bit more clearly
  132. (only a few hours of sleep last night).
  133.  
  134. >
  135. > Ingemar Ragnemalm has written a Sprite Animation Toolkit that was in
  136. > preliminary testing last I knew.  You might want to contact him and get
  137. > ahold of it.
  138.  
  139. Sounds interesting.  Do you have an email address?
  140.  
  141. Thanks-
  142.   Tom
  143. 
  144. 
  145. Path: ucivax!gateway
  146. From: tj@cs.ucla.edu (Tom Johnson)
  147. Subject: Re: Smooth Animation & GNE/WNE - Is it possible?
  148. Message-ID: <9208020004.AA14438@kona.cs.ucla.edu>
  149. In-Reply-To: <Mailstrom.B54.38003.15089.de19@umail.umd.edu>; from "Dana S Emery" at Aug 1, 92 11:20 pm
  150. X-Mailer: ELM [version 2.3 PL11]
  151. Newsgroups: fa.think-c
  152. Lines: 6
  153. Date: 2 Aug 92 00:59:07 GMT
  154.  
  155. Thanks Dana
  156.  
  157. I like the idea.  I think I'll put a "niceness" control in the preferences
  158. and let people choose.
  159.  
  160. Tom
  161. 
  162. 
  163. Path: ucivax!gateway
  164. From: jmunkki@vipunen.hut.fi (Juri Munkki)
  165. Subject: WaitNextEvent in games
  166. Message-ID: <199208012139.AA35990@vipunen.hut.fi>
  167. Newsgroups: fa.think-c
  168. Lines: 24
  169. Date: 2 Aug 92 01:01:23 GMT
  170.  
  171. I'm soon going to release the source code for what is known as
  172. "STORM". I guess the think-c archives might be a nice central
  173. distribution site for them. STORM (I really should call it
  174. Arashi, since that's the new name, except that I didn't have
  175. the time and energy to rewrite the title animations completely)
  176. uses GetNextEvent and still maintains a 20 frames per second
  177. animation rate even under system 7.0 with Finder running.
  178.  
  179. Note that open control panels use huge amount of background
  180. time. Terminal programs and other such programs also usually
  181. require some background time. Since the user can fairly easily
  182. control the amount of background activity, I prefer giving
  183. time to other processes.
  184.  
  185. Ben Haller (the author of Solarian) has the opposite approach
  186. and he uses the OS event manager. The OS Event manager does not
  187. give time to other processes.
  188.  
  189. A compromise might be in order. You could let the user choose
  190. how often background time is given and use the OS event manager
  191. for getting actual event information.
  192.  
  193.     Juri Munkki
  194.     jmunkki@hut.fi
  195. 
  196. 
  197. Path: ucivax!gateway
  198. From: umdenbo0@ccu.umanitoba.ca ("David A. Denboer")
  199. Subject: Modeless Dialogs
  200. Message-ID: <9208020459.AA13492@ccu.UManitoba.CA>
  201. X-Mailer: ELM [version 2.3 PL11]
  202. Newsgroups: fa.think-c
  203. Lines: 25
  204. Date: 2 Aug 92 05:00:09 GMT
  205.  
  206. I post this again, because it is very important that I get it to work this
  207. week.  When using modeless dialogs in THINK C (created in ResEdit), THINK C
  208. displays the wrong type of window (It displays a ZoomDocProc when I want a
  209. NoGrowDocProc)  To post the dialog on the screen, I use :
  210. if (gModelessDialog == NIL) {
  211.         gModelessDialog = GetNewDialog(rEnterDialog,NIL,(WindowPtr) -1);
  212.     }
  213.  
  214.     SelectWindow(gModelessDialog);
  215.     SetPort(gModelessDialog);
  216.     ShowWindow(gModelessDialog);
  217.  
  218. Now the window type is defined properly in ResEdit, and the same resource works
  219. fine from THINK Pascal.
  220.  
  221. Any suggestions?
  222.  
  223. --
  224.  
  225. David  A.  den Boer
  226. Musi Computer Products
  227. Macintosh Users Show Intelligence
  228.  
  229. umdenbo0@ccu.umanitoba.ca
  230.  
  231. 
  232. 
  233. Path: ucivax!gateway
  234. From: umdenbo0@ccu.umanitoba.ca ("David A. Denboer")
  235. Subject: QuickTime programming
  236. Message-ID: <9208021007.AA04466@ccu.UManitoba.CA>
  237. X-Mailer: ELM [version 2.3 PL11]
  238. Newsgroups: fa.think-c
  239. Lines: 31
  240. Date: 2 Aug 92 10:07:16 GMT
  241.  
  242. When using THINK C 5.02 for QuickTime programming, I have a few problems.
  243. I am trying to use the standard controller for viewing my movies, but I
  244. can't get the controller to properly update itself.
  245.  
  246. I put the statement MCIsPlayerEvent in my mainloop like so:
  247.  
  248. while (!gQuit) {
  249.         gotEvent = WaitNextEvent(everyEvent, &theEvent, MAXLONG, cursorRgn);
  250.         MoviesTask(theMovie,0);
  251.         MCIsPlayerEvent(myMovieController, &theEvent);
  252.         if (gotEvent) {
  253.                 if (theMovie != nil)
  254.                         DisableItem(GetMHandle(mFile), iPlay);
  255.                 HandleEvent(&theEvent);
  256. }
  257.  
  258. But the controller never gets updated.  It just stays right at the beginning
  259. of the movie, or moves just a little at the beginning of the movie.
  260.  
  261. Am I calling this wrong, or should I be calling it at a different place in
  262. my program.
  263.  
  264. Any Help would be greatly appreciated,
  265. --
  266.  
  267. David  A.  den Boer
  268. Musi Computer Products
  269. Macintosh Users Show Intelligence
  270.  
  271. umdenbo0@ccu.umanitoba.ca
  272.  
  273. 
  274. 
  275. Path: ucivax!gateway
  276. From: morley@clam.rutgers.edu (darin s morley)
  277. Subject: LZW Compression Revisited
  278. Message-ID: <CMM-RU.1.2.712871424.morley@clam.rutgers.edu>
  279. Newsgroups: fa.think-c
  280. Lines: 38
  281. Date: 3 Aug 92 19:50:36 GMT
  282.  
  283. I'm responding to a posting which I saw here a few weeks ago about the LZW
  284. compression algorithm. I came across some interesting legal information on it
  285. this past weekend. As some of you may know, the TIFF raster image format
  286. optionally supports LZW compression. At least it did. While reading through
  287. Revision 6.0 of the TIFF format I came across this:
  288.  
  289. "When LZW compression was added to the TIFF specification, in Revision 5.0, it
  290. was thought to be public domain. This is, apparently, not the case.
  291.  
  292. "The following paragraph has been approved by the Unisys Corporation:
  293.  
  294. "'The LZW compression method is said to be the subject of United States patent
  295. number 4,558,302 and corresponding foreign patents owned by the Unisys
  296. Corporation. Software and hardware developers may be required to license this
  297. patent in order to develop and market products using the TIFF LZW compression
  298. option. Unisys has agreed that developers may obtain such a license on
  299. reasonable, non-discriminatory terms and conditions. Further information can
  300. be obtained from: Welch Licensing Department, Office of the General Counsel,
  301. M/S C1SW19, Unisys Corporation, Blue Bell, Pennsylvania, 19424.'
  302.  
  303. "Reportedly, there are also other companies with patents that may affect LZW
  304. implementors."
  305.  
  306.         -- _TIFF_Revision_6.0_, Section 13: LZW Compression, p. 57.
  307.  
  308. Names of the other companies were not provided, so your guess is as good as
  309. mine on that one.
  310.  
  311. From the above, "Software and hardware developers may be required..."
  312. Translation: "If your application uses LZW and is a miserable failure, we don't
  313. care, but if it's a success, then we want a cut of the profits."
  314.  
  315. "tiff6.sea" can be obtained at the usual haunts (sumex, umich, et al.), but it
  316. comes in the most user hostile format possible. It is an ASCII text PostScript
  317. file, weighing in just over a meg, at 1046k (after decompression).
  318.  
  319. morley@clam.rutgers.edu
  320. morley@clam.rutgers.edu
  321. 
  322. 
  323. Path: ucivax!gateway
  324. From: k044477@hobbes.kzoo.edu ("Jamie R. McCarthy")
  325. Subject: Ragnemalm's email address
  326. Message-ID: <9208032128.AA16667@hobbes.kzoo.edu>
  327. X-Mailer: ELM [version 2.3 PL11]
  328. Newsgroups: fa.think-c
  329. Lines: 5
  330. Date: 3 Aug 92 21:26:52 GMT
  331.  
  332. Ingemar Ragnemalm's email address is ingemar@isy.liu.se.
  333. --
  334.  Jamie McCarthy      Internet: k044477@kzoo.edu      AppleLink: j.mccarthy
  335.  "I don't think we should have to have them wandering the streets
  336.   frightening women and people."                             - Pat Buchanan
  337. 
  338. 
  339. Path: ucivax!gateway
  340. From: tj@cs.ucla.edu (Tom Johnson)
  341. Subject: Re: WaitNextEvent in games
  342. Message-ID: <9208030503.AA05577@kona.cs.ucla.edu>
  343. In-Reply-To: <199208012139.AA35990@vipunen.hut.fi>; from "fa.think-c-outbound-request@ics.uci.edu" at Aug 2, 92 1:01 am
  344. X-Mailer: ELM [version 2.3 PL11]
  345. Newsgroups: fa.think-c
  346. Lines: 21
  347. Date: 4 Aug 92 00:55:10 GMT
  348.  
  349. Hi Juri-
  350.  
  351. It's great to hear that STORM/ASAHI source is going to be available soon.  I'm
  352. really looking forward to taking a look at it.  I'm most impressed with the
  353. sound toolkit you released earlier, and I was planning on using it in
  354. my application.
  355.  
  356. I think you've hit on the solution: compromise, let the users decide how
  357. friendly to be, and use OSEventAvail for fastest possible speed too.
  358.  
  359. Now I'm feeling impatient.  How much longer do you think we'll have to wait
  360. to see the source in the Think-C archives?
  361.  
  362. .
  363. It's the help of people like you that make the internet such a valuable
  364. resource.
  365.  
  366. Tom
  367.  
  368. ps, besides, Tempest is my girlfriend's favorite arcade game of all time...
  369. maybe now she won't be dropping so many quarters int the arcades :)
  370. 
  371. 
  372. Path: ucivax!gateway
  373. From: umdenbo0@ccu.umanitoba.ca ("David A. Denboer")
  374. Subject: EnterMovies and Events
  375. Message-ID: <9208042324.AA17982@ccu.UManitoba.CA>
  376. X-Mailer: ELM [version 2.3 PL11]
  377. Newsgroups: fa.think-c
  378. Lines: 22
  379. Date: 4 Aug 92 23:24:23 GMT
  380.  
  381. I'm looking at ways of enhancing my QuickTime Application, and need a few
  382. pointers.  If a user is playing a movie, and then decides to Suspend the
  383. application, should I call ExitMovies() on a suspend Event, and
  384. EnterMovies() on a resume event (assuming that there is a movie to be played)
  385.  
  386. Is this possible, or should I forget about it!
  387.  
  388. Another thing...Should I call ExitMovies() whenever the user opens the About...
  389. during movie play ?  EnterMovies() causes the Sounds (beep etc) to not work
  390. when an app calls EnterMovies()...  So should I call ExitMovies() whenever
  391. there is an event not related to my movie?
  392.  
  393. So many questions, so little documentation (I would like a QuickTime book NOW)
  394.  
  395. --
  396.  
  397. David  A.  den Boer
  398. Musi Computer Products
  399. Macintosh Users Show Intelligence
  400.  
  401. umdenbo0@ccu.umanitoba.ca
  402.  
  403. 
  404. 
  405. Path: ucivax!gateway
  406. From: C2MXBAR@fre.towson.edu (AARON BARNETT)
  407. Subject: apple.com (duh)
  408. Message-ID: <01GN73KWSQUQ91WVOY@TOE.TOWSON.EDU>
  409. Content-transfer-encoding: 7BIT
  410. MIME-version: 1.0
  411. Newsgroups: fa.think-c
  412. X-VMS-To: TOE::IN%"think-c@ics.uci.edu"
  413. Lines: 4
  414. Date: 5 Aug 92 00:43:24 GMT
  415. X-Envelope-to: think-c@ics.uci.edu
  416.  
  417. i have ftp'd to apple before, but lately i get 530 User anonymous unknown.
  418. to that i say "off course im unknown, im anonymous."
  419. what do you think?
  420. aaron
  421. 
  422. 
  423. Path: ucivax!gateway
  424. From: SCHENKL@vax.cs.hscsyr.edu
  425. Subject: RE: apple.com (duh)
  426. Message-ID: <920805111010.2020ed5c@vax.cs.hscsyr.edu>
  427. Newsgroups: fa.think-c
  428. Lines: 4
  429. Date: 5 Aug 92 15:54:02 GMT
  430. X-Vmsmail-To: SMTP%"fa.think-c-outbound-request@ics.uci.edu"
  431.  
  432. Try ftping to "ftp.apple.com" I don't think that "apple.com" is accepting
  433. anonymous ftps.
  434.  
  435. Anyone have more info?
  436. 
  437. 
  438. Path: ucivax!gateway
  439. From: yjc@po.cwru.edu
  440. Subject: Some Think C things I've been thinking about
  441. Message-ID: <9208051917.AA25679@pop.CWRU.Edu>
  442. Newsgroups: fa.think-c
  443. Lines: 31
  444. Date: 5 Aug 92 19:17:45 GMT
  445.  
  446. Threads:
  447.   Would it be a good idea to implement threads as a Class? How would you go
  448. about doing it? Has it already been done? Is it worth the bother? I was
  449. thinking of implementing threads as a class in the following fashion:
  450.  
  451. 1) A CSpindle Class (to spin off threads) to handle CThreads. This Class
  452. contains a list of all CThreads. It's init method will install a CChore
  453. object that calls yield() during idle time (perhaps once every X
  454. ticks).It's dispose method will be responsible for ending all the current
  455. threads and removing the CChore object. It's spin() method will be
  456. responsible for registering Cthreads in it list and forking them.
  457.  
  458. 2) A CThread Class (Does this have to be a direct or indirect class?). The
  459. init method will call newthread() to allocate a thread handle (should this
  460. be private, protected or public data?). It has a custom method to handle
  461. customisation, and a fork method to handle the actual forking and calls its
  462. task method to do the actual work (maybe fork itself should do the actual
  463. work instead of calling). It's dispose method kills the thread and
  464. deallocates the space used.
  465.  
  466.  
  467. Hex Map:
  468.   My friend and I would like to do a small hex map based game. How should
  469. we go about constructing the map display? Would it be possible to write a
  470. custom LDef for a Hex Map or to modify the CTable Class to display
  471. Hexagonal Lists?
  472.  
  473. ---
  474.  The Evil Tofu ("I thought I understood the Mac ...")
  475. "No Lah! Sure or not one! Terriblur lah! Kiasu one! Wah Low Eh! Alamak!"
  476.  
  477. 
  478. 
  479. Path: ucivax!gateway
  480. From: k044477@hobbes.kzoo.edu ("Jamie R. McCarthy")
  481. Subject: An access quandry
  482. Message-ID: <9208052000.AA27995@hobbes.kzoo.edu>
  483. X-Mailer: ELM [version 2.3 PL11]
  484. Newsgroups: fa.think-c
  485. Lines: 34
  486. Date: 5 Aug 92 19:58:51 GMT
  487.  
  488. What if I try to access a method that's protected in the run-time class,
  489. but public in the compile-time class?
  490.  
  491. For example, if I have:
  492.  
  493.  
  494. class CPublicFoo : public indirect {
  495.     public:
  496.     void    doMethod(void);
  497. } ;
  498.  
  499. class CProtectedFoo : public CPublicFoo {
  500.     protected:
  501.     void    doMethod(void);
  502. }
  503.  
  504. void CSomeOtherClass::doPublicMethod(CPublicFoo *theFoo)
  505. {
  506.     theFoo->doMethod();        // this looks good to the compiler
  507. }
  508.  
  509. void CSomeOtherClass::doProtectedMethod(CProtectedFoo *theFoo)
  510. {
  511.     doPublicMethod(theFoo);        // this is insidious
  512. }
  513.  
  514.  
  515. What will happen!?!
  516.  
  517. I'm guessing a runtime error--method not found--but I dunno...
  518. --
  519.  Jamie McCarthy      Internet: k044477@kzoo.edu      AppleLink: j.mccarthy
  520.  The essence of OOP:  "After some hacking, I finally got the program to
  521.  work, but I'm still not sure why."  - David Marcovitz (marcovitz@uiuc.edu)
  522. 
  523. 
  524. Path: ucivax!gateway
  525. From: C2MXBAR@fre.towson.edu (AARON BARNETT)
  526. Subject: INITs, cdevs, patches
  527. Message-ID: <01GN8BMEG1UQ96VLCW@TOE.TOWSON.EDU>
  528. Content-transfer-encoding: 7BIT
  529. MIME-version: 1.0
  530. Newsgroups: fa.think-c
  531. X-VMS-To: TOE::IN%"think-c@ics.uci.edu"
  532. Lines: 5
  533. Date: 5 Aug 92 22:10:07 GMT
  534. X-Envelope-to: think-c@ics.uci.edu
  535.  
  536. I want to write an INIT/cdev whatever, the thing i really want to know
  537. is how to patch traps.  I have inside mac I,II,III,V, and think ref but
  538. can't seem to get a lead.  anything that could get me started on system
  539. stuff would be mucho apreiciated.
  540. aaron
  541. 
  542. 
  543. Path: ucivax!gateway
  544. From: tsang@isi.com ("Kam C. Tsang")
  545. Subject: please add me to your list
  546. Message-ID: <9208060326.AA16350@phecda>
  547. Newsgroups: fa.think-c
  548. Lines: 6
  549. Date: 6 Aug 92 03:29:39 GMT
  550.  
  551.      ----------------------------+-----------------------------
  552.                       Kam Tsang  |  User Interface Group
  553.            (408) 980-1590 x 275  |  Integrated Systems, Inc.
  554.            (408) 980-0400 [Fax]  |  3620 Jay Street
  555.                   tsang@isi.com  |  Santa Clara, CA  95054
  556.      ----------------------------+-----------------------------
  557. 
  558. 
  559. Path: ucivax!gateway
  560. From: de19@umail.umd.edu (Dana S Emery)
  561. Subject: Re: apple.com (duh)
  562. Message-ID: <Mailstrom.B54.10229.9528.de19@umail.umd.edu>
  563. In-Reply-To: Your message <920805111010.2020ed5c@vax.cs.hscsyr.edu> of 5 Aug
  564.  92 15:54:02 GMT
  565. Content-Type: TEXT/plain; charset=US-ASCII
  566. Newsgroups: fa.think-c
  567. Lines: 14
  568. Date: 6 Aug 92 04:50:44 GMT
  569.  
  570. Yes, the site name is
  571.  
  572.         ftp.apple.com
  573.  
  574. and, of course, you must sign on as anonomous with your *verifyable* mail
  575. address as the password.  Seems Apple is actually verifying the password, which
  576. may trip up people who cant type blindly.
  577.  
  578. IMHO, any program which offers up 'anonomous' as a default acount ought to be
  579. clever enough to use a non-blinded password typing protocol when a user accepts
  580. the default.
  581.  
  582. Dana S Emery <de19@umail.umd.edu>
  583.  
  584. 
  585. 
  586. Path: ucivax!gateway
  587. From: laborde@imag.fr (Jean-Marie Laborde)
  588. Subject: Unwanted events and THINK C Debugger 5.0.2
  589. Message-ID: <9208061226.AA11865@imag.imag.fr>
  590. Newsgroups: fa.think-c
  591. Lines: 30
  592. Date: 6 Aug 92 12:27:55 GMT
  593.  
  594. I have encoutered a strange behavior a on midle sized project (1 Meg).
  595.  
  596. When running under the control of THINK C Debugger very offen after a
  597. FlushEvents(...) [even after FlushEvents(everyEvent,0)!]
  598.  
  599. EventAvail(mDownMask,&evenement) reports an event even if
  600. there is no mouseDown event at all.
  601.  
  602. The same happens with WaitNextEvent(....).
  603.  
  604.  
  605. It works normally (ie flawless) when turning the debugger off or when
  606. building a standalone application.
  607.  
  608.  
  609. I use Think C 5.0.2 & Debugger 5.0.2 on a Quadra 950 but the same
  610. happens on a regular Qudar or a II fx.
  611. I tried to remove all INITs but the strange behavior is still there.
  612.  
  613. Does have somebody any ideas or how can I fix the problem?
  614. Thank you!
  615.  
  616.  
  617.  
  618. Jean-Marie Laborde          laborde@imag.fr
  619. Laboratoire de Structures Discretes et de Didactique - IMAG
  620. Universite Joseph Fourier - CNRS          BP 53x 38041 Grenoble cedex
  621. FRANCE
  622. (33) 76 51 46 10   (sec 76 51 46 16)      (fax 76 51 45 55)
  623.  
  624. 
  625. 
  626. Path: ucivax!gateway
  627. From: umdenbo0@ccu.umanitoba.ca ("David A. Denboer")
  628. Subject: CDEV, INIT
  629. Message-ID: <9208061821.AA01952@ccu.UManitoba.CA>
  630. X-Mailer: ELM [version 2.3 PL11]
  631. Newsgroups: fa.think-c
  632. Lines: 491
  633. Date: 6 Aug 92 18:22:58 GMT
  634.  
  635.  
  636. If you don't want the content of the letter just trash it!
  637. It contains sample code for a CDEV, and an INIT, downloaded from UMICH.
  638. The first is in Compact Pro format, the second in a PIT format.
  639.  
  640. Here we go!
  641.  
  642.  
  643. (This file must be converted with BinHex 4.0)
  644. :%f0NCACcDf9XCA4[EM)Z-#jMF(3!8%&$9%033e3!!!!!2!F!!!!!JM`"!6[C!!!
  645. k,98!!)GjK3!'!!!!!!!!!!!!3!#D#QB!H'#(QU!!#(LBUJH'GAQ'UAGRF(CfQ!U
  646. 3!!#U"A98Cf@B9P4J99@(T`F*!!L!!!!!!!!!!!!!!!!!!!!!!!!!#L!!!M-d489
  647. QH(Pi#3!*N!#!P`#B!*HB#)N!N!!*!!N!#3!*'L08990P9RD!GRCQKRH)QAKj#)F
  648. *KT!!#3!*#I5E4SUMpFr$qFJ#jF21k[ahB3rr$PphZjH5(AA6ZSMC$r@H'L9Ye&3
  649. *b+ZHf%[$q)di3mY`)iEU,DV)h``h4Ki8Aed`T#@KAEK'lE46(14VTf`mjB`YM'U
  650. '%Z5%[V'kkZU)0Ule*$qYm0mF0dUVmm2pba)h[h5aXU"Z#pCl$I+U[EjZ$U&r#00
  651. HfZQLbcc#`bE0@R[JF2Hr*NdkZqIZkHI42Nb6E0Fq[*-NFkEF0[*$SVSXPil-+l,
  652. `@6G1c9Slp2CUK[SVYKPha[[SmBma`IiaZpmddhTeS+P)`SVrR*0p[[0AK(Hf6J5
  653. p2QFi#'BH9&m1&`1)eIj3`Yahk30AZ66m26j5mJZlF60l`1&6h#k9N!$YSYMBKj6
  654. `dp$b9MNQK@+fN!#iRaEKc3R)(lSdbZU)Zir6[&E$()A',3fbZK,'j"95P%0rY4C
  655. L)pkT@q)9b(REB'U8HAi5ZM$aXPi8@AmN,ife"JR0Zp%(9CimbU3pZ&fEQKBY%LJ
  656. hE)m)b44BGk1dB!9'@"JkH[YkTqZI9hmj90&@0(CUepiVeME9,S&RrK$h'KZN5jf
  657. !8#k%pDCEa2fSPr06MJK6bqeSUdBi2-T'2DLVPB9!9GL[K4IK&4Cq3,$+qd#Vc5e
  658. ND,P&IpPPHJK9e,'lDpf0Y(KB+CI'8J9fqr*0(r`R,E4B!YSRe4mLa"jPiaYNZ6d
  659. pRfqrlNPHhZl0%r4XlTd*XqQf[!&IaRr66U%S,m+--EiFh`A9A,VRkZR-#+BLTcb
  660. AQReG$d6IbV`KPFmJ54#P8lRQLb9m@j-G&Gr#9rb20A+S(164*0h4QcKd8B0Seh,
  661. qHR#[k[Jak)d2fCk4!$f,IeMj`bMNESh8AFd"Yqpk%G%Y'qTm)&Uab)"HLZAIIim
  662. Kjr-CV26N9KrERlJ$6$3h'`CZ0$6'(SjpFm!KiGR549@9Mb[FA06e+Z200ZF#`X%
  663. GJBHb&Jb2,9SlPM)FB2X+'AfpTMpZ0MDE5PJjbm+K@4JcX-3-E0JX'Qm!jTUNEl"
  664. jbm*T[T(cRqVFY94Kp[[aDHQ(aV`jlDXTl!jcpSkih$9HNkVCSIRrL(YKhr+Fc(M
  665. !RP+Vq9d0dU)$8$HL98HZLrkCXfBe*2e#L`9,NV*,dBi5*mY*eH"Eh83L!3LH%48
  666. !6D9FrJ(*8`pNP#`f,396AjBX!iaGHY5KJYC%S+[9KCL3!(Q-pJJ$ZqHRA1B`3QP
  667. m9fV*kSrck5G)pZc&a-*cS%UC!Z1V0UCH,B3+'Mec+50(M3-jP["BNiAi,9cfIRB
  668. T+&[#FPIJ35IK`qHTK6RaDhcp6p&P30C8qp"G*!d-Y6IJ3l86ADX@rUa"10lMj8D
  669. mTXqS(%MDZ"5+U*Zh4fK('h!%'*Ah8kHK6ZdRLN[03K8dXq8[BHRikiIdrleMq!p
  670. jG`ahB!RfihlM#GAX(`Sb)1U9&6#YU6+NU4c)IeBNS%flEC2T`imF0qYr1'q0rH'
  671. r@rA$I%rh$I%rr$Dq'hfiDIAh",Sk*-pKrj0Vbibf[G(I(Ii4ZjrlN@DiiE1#"EV
  672. JFR4pIV&m"6@N[XPI4Jhm9b8T,P9qp4[0-@mK%EACVe185VmP0EeF644aXPd5E9p
  673. `RN1f0Tk*C42aIrilBaqK#'ErQIbV'QRNS(r8!`kbM!hNJZakGCH)BaTeY19J%A4
  674. GR2I+diJDQA-h%AkfX0eG[R1kE2aBqF5ZR6p2Ge%2aX96CHV*KH@LI-,)40qU#&e
  675. IAeV0p(G%hFR2F!fF!!"#!!#!!!8'"J!!!!!!!!!!!%!!!!"i!(#!!)!(!!"S#3!
  676. 'G99jKBQ(CQ"QC`N)!!#3!!9f9(CeQ%G8F&9@H3HC#3!*N!!0!!)d494'CQ969h"
  677. i#!NM0%48499hCQ$`f@FB8dh4pV--r,kDG0QcMA[lYG0HR64iF+q'QLMEirb`1kD
  678. 12ih9J6bcpj4qpq@Hq2+(k3hedlGp@QMr[rq'IR(KRMIKce3bcaqICfI4![j6`ce
  679. 3[`cMcMLN6b[rZ,3Rj@mJ*m#6V!M618mG8*6`jJU5+q*LY&&HbSJK6BhCiKXI`lG
  680. !J#LLNJd$@hYqeG2(UiL()mXrL"Y,m)Ie3)'qYZ&c,(N"$plm,TreUJN)#J@0K1J
  681. e)'5+A@jfpXqQ&f6X@jF%4MZQU#3X0j*0j)NVFXkBbPUJ3-STlK32A!UHFRIcYbi
  682. FXCbPffL9qfFj4Y`+,`1EYqfQZV`he`X4(I9*ThD$K63@VHZ$QS0'l'I+bTS98[P
  683. ,[iTDkehhBaBSUIY(('qjJ1@4%h2$e%mQ0F)b$V+6)G3MpFYQTYGeh'DBP6`BYPP
  684. `0p+L++KUK"B35A-&jDCR[Mk"qGf-r3L*)phH'bRMCYf3!2eMQm5$TbLm@FV8Ae-
  685. 1D2Y%[beC!i@NmEJAXkrSrcI(2TMKP#kI6aP'(+9r,m`RM$#HIqUlSVa0(SUZY&j
  686. BA#[A9#Uqf8qDQ0M(bfG24VB@1@*fbMK9QF@bc,1h2S1Y22&(),Fi"KH`@V&2VH*
  687. ([GU3!1ZDC6b2&Al+pI,1rfI"LU0Vq'V&HaV&2fMlTXAc,qGb!-E8UR6kA2mS9G(
  688. I(,+hR'(9kCFqZ$f*h9!0aL9Nr,G-I$J*455&3J+HjFFf)1l%B9eA0hhSa1qG'-F
  689. Mp4*dLi&k4EVdI@QZZKfj62epfa6F0TR@0)lJ5lCkPChl[[Ahel11XU'dk3,I)!!
  690. !!)"&GQD(HB#(N!!*#JLJN!#CN!!)5(L!!(N*LATiS!!!PjN!!)GeH)LAHAGhLAH
  691. 3!*N)LU#3!*9eCAGQLAK9L@CRL(L3!*!!Q(LRJ)#!S*!!!*!!N!#3!*!!!)#CN!!
  692. !H(!!QSU3!!#3!!#3!*!!!)J*#3!)!!N!!!!!J!!!!!!!!+!+Q3#3!*!!#3P`F!!
  693. *!!S+!)BB!!%N49B(GJ"`!!!!!!!!!!!!!!!!!!"`#"0%49C8F!"`K#3#9p#%+`%
  694. Krl'NcT2&#[)&qarLaj[cF+@e06V84bG1A-c)3`TE0(8dY25PS`"Gl(,cqGPkI,b
  695. 4A`R`CjHl[qYf34`,(0XfldEGkMT#hqF1G#Q(HNl6)hK9rXNii@iE#hL4CbD9mi$
  696. 9q($0KCKmXPTiBVEc6!,XbHfKM5rlZPkmRmT1HkB`H*!!j%2-KpX2bE,pr(i1K4e
  697. BjGZEAUePH9qqeAI[hr(Y&rH$`GhEh1rZ9["r[Ze[mpl%VGr[HTYS``jp%Dfjki%
  698. jk%FUYi2RfQ'%%r#rIrqk-G%E[rIcm1lj@*,Zm8#C1*,pABa*IMrMp[#qT,j2ZZ"
  699. H"i`,XpFSFTEcXr0PPA91CTF[Q+S0q1C,SFCSS-B-jcpFDVe[kif1%FGAAAK"3Q%
  700. QmXMXB#+9Q'@&ep%KpMS`l%2KKppI"dUV1Y4FiY,9eH(%Kh1hLVjV6pfMAS[98aa
  701. G(8k0%pk21QZccDrRiIXdA,YX-+E$AM$AN`r(YmD@VTpDjEeV9k2qSmR)p,)p()j
  702. 2)MRfjl8e'['@UQj0C9Aj!`p`BHmpNYZl(2ST[%BkXebM'MQDXHY9X4f,Y"l6N4[
  703. @U+Bp2ASQ#&fp0HS4+1V-8[4E"Gb0ZP-ENCY5VB[4e+YQ09b0QUIBk4&jP'FCChZ
  704. 3!&LGMb)DX-5'mrh9CKqX0Q6Mel'5T)V-a5$rfN`HhkZ6'kb#c-ZUpFUeb#dPmCG
  705. (8YcPL8aHac'`m2+khT[-HcFCh)B3i-*$`(Y3r56+I[k-*HcpH$d&jb(r)B@ARD2
  706. 0"QEPjRXC`TpRT66fJK5cdd)HrPD'AR!MY-d#%2NFe$kE-pl8"(HTZ6hJ4pfqHpL
  707. XFPl2ppq0qr''"h'E0MVm4*mcGbCq8FhjJcd)5lI`0B5Id"Ra1$0'%ZdU)@fp!'E
  708. 4)1'$04ej'&EP"MiQm(mR4kY*hqj4G1r6d0+J!!#!4'CSCRGhD)PSQ(QDGkU*PfL
  709. ,QBPkLTPfHT!!QjYiLTL(ChKhL'L)HAGjD(L!P`#DTiHBKiPhQ@KRHRGiLEU3!*!
  710. !URL,YhQJN!#JQi#CN!#UX*QUZUZUN!#EQ,UCUSZEN!!!QB#!USQlQlUTS,#JLTX
  711. +UjZ3!*!!QD#EN!!(J+"`Ki#,U`UCN!#EKK-!!54&9RH)Q)Q3!)N*!+!!!!!!#Kd
  712. L4&9@9QC@ChG`L)!!#(L(LBQ!#AH)N!#3!!N!N!!)N!#%)J*mlB3Kmd")k-qVPCd
  713. rLCA'Um2jP2(cFVMCR#ajr%bDQ1k-DcFF2(iqqm,(UBqGP9CrVBmJ2X1ql[#[GpI
  714. AF14bCEf'@IRG2Hq1K6Ari#$`i3XIf3a*QlUjZGM9FkCJprQiqCamIA1#%r'Um1H
  715. i+@'rUjf6R"R2NephamE*UBhIe-Hc[mV'iFqVMq(2i@99cXHVRCT"qC2Nh9GpAMC
  716. 1GRC0A`*R#UC@D"&JL(*UmB#krIBh(ajmQIMCT%mT3C*R`P`QJCAS%ehf8+9pp`X
  717. M+RlNL8$ZjV9Uj6*6he2F9+P[QCZC`J@qM1KR`NP,14bCLR15a3K$9-$+q%ZpTm#
  718. Q,()j-pJ9b16XH%)[6RcAa6!&qZLUijphKB9rGFMNbNSf(U4m50R)cSA-I%Kpd#0
  719. R(b)cC(L!h0[GcZlqpl["i!'5T8)q$#!E9b$X%"G8Q6ZpjZ0a'X"eGABH2Qjdqpa
  720. q28U!IekKL4#9%+!2lH6R`Kp,mrSJAmhBiG,Gi'paF+lhfiZlrEBG2IhhdYAI9-I
  721. LjYcFr4F$`Rc`%hZih'$HUNL$Dq9$V&4HRaLX(&alHrbHr"DGJhQmRS)M(c[m[6m
  722. pCFqcl)$E#369D)meHl,BjR%aZ&Mfp4KReVfCiPAG[4R*)aY'9QP9q$hrJKaa,I,
  723. 8QBGphZ(#jKh%INNID8eaMq(rlp(F`F*%PrThL3DiXGD'83Jf1i9HhL(C2iKqGre
  724. Hrp`H%`+DaU,AQ5YT#BN@CZ,r*cFjL$C[a"`[li-)P+V6fB`p9FT@V[FR'UCAJEr
  725. 1bDQEEjB"JVeMqShr-(XV@A$8b@a-NYJP44EjE-b'*@YIL9hRl@bMNBl,LDcfGkN
  726. KD9@K9YP&X3i+Y6(qSYqkbdS2#CkSXYDl4Q`XcXhrjJ5d@@XU%UMrk(Gr+l['bDY
  727. GJ,8ZGE!,Ul$XmAIBp6#c-VK+Fp@K5A5fY'&,DdMQ94QpRLphMjf4KVKlQeZ4bE'
  728. %LY@A1el1!AeES[1ZPYdlSiCdr2a,R1bVZpCQI,ePdqp"E"EP+dedTSRlj8c++B5
  729. eTM#@P1EG2G,VSfPVPiAXhhCGl@h9lGhY4PYXR1bFFbLi@5'pN!"+bi0GG1hrKC`
  730. h@Al$[Kk%#Sj+X,TjV,j%2ANI@KXi5BeT(hJJCDdJ"ke%-KE(c&Ak,,T5b$+[mrU
  731. `Ul4!RY`UlEe9a5im1E$M`q)"2MKairL!6cJ%q!"2r)H($e3%pB"2M!6j)H((m)#
  732. IL!3()r$$3#$3#$3#$3#$3#$3#$3#$3#$4"c4'$4'$4#64"c4'$4'$4#6aJFmB(2
  733. '"6aJ8Eb$eZ`fr`arSMFrBV3a)IbKm8EQ1d!c`(X-b!eq0`Nb8&IBV!8C*Ul'`fr
  734. h9Q4C3Kl2P`X&4H4)NIJ"lBEI)FBq0X0YP`f'fU6mAm(mf"k@UpbeQB(0qAdlrhj
  735. fIJI8Ri[IB1"d-$JGAq&,5NehDfm0C[m%(Zql'e#VfVcY1AjZ*Jd,H&KG@m+ld,@
  736. faEAZS4jIQcj[JDqK0T9B9`#@&+VeG2PqK3Qm[dU%e-R"PAP[eG2HD2%PhR&pf4`
  737. E1K,G3Q&AiprJm[m[dXAhC$b$0N3Cce"Q$U3X'3GdD%em`"0$k`8!2(SGUh4&$ST
  738. kFA1Mbq@kZ0LK-9YLTD`Qc0TN4%EEMTGATjGeXIElcp0EjAbdD`5TVM40BX$CeHQ
  739. rjB)bP*D)-dS@Hbm8h!`VEIF'A2`lE)K1RiGaE3XZB1A%kAEAm,#rpqcJME$C"eC
  740. b$VDP1XU@IYU-*U9,Ilq"aRJjB@e+cr*#[Df0Y9@pfPT6,R%`91Q"cDfMf@,2TM0
  741. CdZId2*YU1f`kh[AQji1eZ*HP4hAmB50Vp#%ZPrYlRfYYi8*9EhEcGF(VjppF62A
  742. q8PM,K+bjG#(SBY2GC-[me@YlZ9m02Fj-[R9Dh[CA2[rIerlhU+S3S6EBLVDH,#1
  743. TdVcdG6Tr2U`QkRmAa9b%#J9bLEXJFhP68k@9f9afZTdY+M,SkR4)-K2eh3r(#9c
  744. 2*iNhX[+3!0EkMY+1TdKUC44U0@k4,eQNBd-Ql1hK1[,H&PpH2"N8peF60+Mfmc5
  745. ZdS6qiK#AGkQRd28R3jZI8q"$MV4cI+iP1Ip#%VPD2D8B5Yi1Q9B$jSl,2i-)IVZ
  746. *P1LdXTCd)1R$!`K6PEV5SdZI3KJHP(Q[85"apZIUZKSl(AHdT#j(%eMd`!jiNfT
  747. )KUG,`11M+Q`bI+`r6NqQDIUZ9j55%`G[-ThC-&hUG(jqI1HMM68hFV4j3q2#,64
  748. &f"C#&NCV-YBD'6@jX(!aPLYP9K195'P'f,+9Y-UCXhBH[LPh1raK+Uf@bmRIi0$
  749. A'p8h!j[9m6X-@&P`GBjGM6bZJV#&U(Gj'XaVP*VNcAQLaDk)Y6R&V6phe)3F31M
  750. PI`S5m[KUESHiZ"QAD0$*pVc2[r6jpl$X+-*c[%*YaY6QdY+eZHj0BPc1rPq[X-A
  751. 8rh0FT*aXqfEZBHc0QZfb)9fTql,PGY4e2e+B06p#jA8,I8rG3eQ"cIrlpQhL`Yj
  752. IC8GY6e1HB@K'DX-AI8K)lDPUFkI9e1GFfaL$f2EmG"Qfb)5Y6QQ*)3pZIHYa0ZZ
  753. R#'r`D4MjQ,2TcVAI(Nj$e&F#4R`2)H6TZH-k"(3Km"P@91KUXrm8Cf*FRUL[aE0
  754. JHRUq9*G`JTqq[G4G*jb'`1X@&b,Beb#ZXIA8K'hHB9rH0lBrImViep#@DlBE&I`
  755. [A2lhMXBjrqGM(DRc(QBfBHVC$1H!QG#1Ir9'1*FaR3VSh"qhZqK'2e)4N@8*%Mq
  756. N"#pXMiS4NpI#9*ZB9ak6@eGH`[DlrL(PeqI$!VrFKipK8K0X2kiF1`di6V(C`P@
  757. 0q!Q(#EBqH"(j)5l(r3"1R$@+'IQC$NZbU@P4jr8l6pmLIP3Rl(+KVk'8HbXrBpe
  758. 4fjbpYS5U%lHIFm(XEhmTmBIFm(VE`#,IR86cfSGdZKR"PehV`YD%HTDdXrUDh)c
  759. qTDp#MIqr*NBApQ"aU@Pqp,8N@Zi&Ui&VYBGae*e+(8mBhrlhU([X!Rph8lV[I3K
  760. YbJAqXf1eH8aGSfIk-r1NCHUQ5T%P`8m2Yhhri)EccELZpS%pI(M`kc#TA[HJCbG
  761. c5[DB%H4ZH"Jhi%HCZGpIES#22i$3MdpchY2FJ4qBrTYm+2kYa6[Vm#2J`UHj5"m
  762. Qj`%N4PplHh`84kfpZm1l!MXEe&%)l2!aZ,MJ4h0+lhbl1AQji&m1%F#%+bpU+k'
  763. piAX3LJb6fS''lD$1ZV`-jM3bCb!-p"`-rB"RR0$,6X!-p&[fc[H%A"AfR-a!9,e
  764. X,FB$2&AH8$-F$-Ka&Z!-p9`-b3-rYF$1+"Kl[X$2UJBIVeJCaJ-U0$+rVJ-*a3C
  765. VE3$1qF*2V!C`fBZHrU8!!&8!!*N!"3!'!!!!!!!!!!#3!%!!!!"S#@GJGR!(N!!
  766. )D+LJPhCPD(@3!'KAF'CRQ3!!!(!&Pf4hC3P'9A"99hH)Q!J!"i!!!!!!!!!"!!!
  767. !!!!!!!!!#J!+)!!#-c4&9@CR"iKiL!K`!)J!!'!!#!"iJ)!!!!!!!!!(%L-d489
  768. QG@9QKiKi!(B!KRH!"rY0SeehiCI,liJ&fqAeZVmH'%2r`cHrhjXN2RAhm+SbKr'
  769. @'LfbkVH#FLV9EG$c[M$eV`i3`i4KTVUPEipZ&FViHGPH'@(99C[P'q%JRlm[haB
  770. XAE64ZJD[q',&46ZRfDZM42La6GZfIELQQdD0mI5Lc$`)IqICVRqFp1lSh8GG1,&
  771. pZ6fr(kIq)&#+Ql0RASRdpZbG%IPS)'KMPXMhiCi%$I$&0lILEec`rUZcIEkpQ&b
  772. #AKECKNKIArXFm+l-)q-9$2CGEhdDA39i9AlHqkf8Xm1Qff8DV2F"QEqHMB!DDjD
  773. Va6G-rbST!S8@N!#N-raJE1)[)94MN!#rU3Q*ce"P%)%dP#Hd0FK-Qq3Q`[qQUiK
  774. KJ3*Cc'*X+@M8b2`hG8j-kDl+Pc`8V#q5'ER-rfa0eBpp@&A6EjfElmN18!H5![a
  775. bR&(H64bm("rGPP(`0CS2qK$r+D6h4qQ"3[M9$jS8K8LNK8JJ#U4FGD!medapFGf
  776. 5$CNQQmN%TA)HSL@#b3hAHB'Y98Ve!i"fddQY4*be&rcrX+D0E%TUUVfr(j+)HlZ
  777. bhaPUP9ihRC(VXPpHZb-2eK+QfQZA9A+[!U2"RVdfkEU[A'M%8J6@-dp1N!!3B-q
  778. qeZUk*)pHQEZkpHQZrbY[1HQ&646e6l+0dqQ#N3j@C![Ej#d*kVZrEpc1lYH93Zk
  779. hR+FdA'0QiIGPp+lpRMBfX#C@Q%9C#4,0X,&X+M2p[aqEj`dCYCHV$SeAj"JrNc+
  780. FfUkVM&"Tre[YM)('L)bq85%%ji%$%L9f"eM+b&,1NK%MI5ebVZMI[h@Tq,&C(!9
  781. D!AQjqGXVR0AYF#$H9N52II@&2XYpFBQ2Qj4addj5VX3D6papPTH&VXGYfr(qk-r
  782. h$D$0lKZe'ca`i+FJ%&EmZL*2E9k$EaEm1SJM52U8j6)*c`[`qXM4iZSmbdrCD1R
  783. cP`T3*Q*bVEi,EMfNaiM(C(MEk4eA@m8rXRQ(0HQ-P3M+UmlXCI4q0h9fdk#p%UE
  784. RbMJhSeVBh2"1V&pjL8-E'h6%dhPKFBT+fca!`BSaG04r0G'rcN2CbBhI(h0m@mJ
  785. 6r5[$'dh'HDif&*I0crXVUShd")FpKBD"lDZ2pQLRZ%+,M(M2GF2NraKCD!TkfPe
  786. K9RS)aS'L$Hr'`-8MJP`K5JX-c"L,mH)L8+P'lDeb(K"EqV,5VZE(dMB,+cN$ME3
  787. F*#XPI('UfhfqIpbMSPAhrid2Xd'T(KR(k#1e$cjpG[2V6(2G8`T)%bq[#0`bmJE
  788. aYheq&FEKrpZ,CVaBCrV)00"Z#9Q$QPLqV3!6bJ!!3J!!N!!!"J!'!!!!!!!"!!!
  789. !13!!#@F!H(#)S)!!U@J(!*CeCAH&QBG@B'GRQ!Q3!!!!"ACNKf@D9e9J99Cf#3F
  790. +!!L!%`!#)d4&9@B(B'!!F!!!F!!!#)!()M46998(G[DEqVZ9mfqAVeFIrjIB!HL
  791. -+[6MC+0`&Bh@9BBG5KUR9YRcaYi9i4GjIj,GM('V$G9BSUjef@4GECrXFlVrr!2
  792. ai4YqG&2m4V86I(UprjK'dh4EGM&@1-[6MM'0dFX*4AM&GX5U[XVPI(V+r#Zkh!Q
  793. !!dFdC3%B5aMPa*a`UYhL8+KQ%9B4cN))!MZXZmJjHY9jRQAaTSf`eP2bbjD+GXq
  794. cYd66jFZ6am*r$,Nb6,'mQhqYFj%'&mGFDZcpjjYZC#2S"(l8@iBe@lT&LVUmV*B
  795. "QbHfS6Lq[I+f2YbYhBR!ZQ2+8BFVa6kK(+lH%VkmCEijm!6fbh5``U[rdRrhr(j
  796. DpQUDI6il*iSYVaq5#Pbe93Ff4I-Dcc",p-i9XCHFVqKiBL*R"SQZYa[ZX'bEC@I
  797. S+(aPZVqeHk25@2#lHNpGVQQl4jAFM!FQ5HR58UE96iE3)9%Cl1@10eSder`ND#G
  798. 'N!!Il[MlrMrdLHqZUblcG#QA*fq0-ffM96'cPDGDCil,VV*9@JaD(+CFcCXm-fK
  799. 4hkrT2hcdlG")-ZAfphhr(pQB[bIf6pe&)JkaZ-rA'frND'V$RU+mH-Q6qG'`jrL
  800. 2H,'R2!Y-9XZHCK'GJC&T*Ff$$ehEY6IhkqC-@D+IR2XSfck@G,Ib'qp6BT6D2#F
  801. I85p)eGTaTcK@H%k#kj[UfL!I@M`(m`$4%dJ,rJlL1ZLlmmD8kPVa[4HGb9",MRM
  802. Z[Uqb%,FdlTBklVmFh%B5I,QVc5"[H,3T6c-pCda64p1Q2VAE[ZjK)cHliG(6(R+
  803. fAV9daqUN,C2VRd(m4NllYp9Ld2pY0RRfef"Ak8e%R#['RE4p&Dakiq#(fQ[$MGJ
  804. ai3Qm(*%qDG!Ge!!!93!!LCL'N!!'!!!!!!#3!+!!S%S!J!GAU'GJKhLDZVPjQ)#
  805. RCQ9SGU"hGf"f9TLV!!"`"ACNCf@A9e9J99ChL*J*!!Q3!!!!!!!!!!!!!!!"!!!
  806. !!!!+!!XJ!!)d4%499QChCRGhH)QBL)HCLBQC#3UDUTQJS!ZJX!Br-d9%9QC@GfC
  807. hGfH'GhL(KiU(LAH*LCQ)HCL*G`LTL)L!#CHTKiQ*U)U+UTQB#DLEX*UUZ3QEUJU
  808. CLBQJ#`QkqYl*426AhkEU+EF1lplre[BkphdXSlpYd2riFIirMai)G0'VE2'Q(qm
  809. --GG9NqX#FK9cceDkBf`RKhEkY@f&Hb'Xa1KEG[fE-2lhlqRUc63A-IjAlqEUQPl
  810. -[0MP[hlfR4,S[hVf2SSYZ!E[6IrCj3%$NE0G(al)kSHq(C,Mkqc*I[Iar2Sfcfc
  811. 4qGh,$&AA6'HVmNKBL'`&VekAUb%9-IAeD*J%,J0qQHc[SU"5j#$AkFhBSfc5mX*
  812. T6Z5r)$hk`1$)E+l)AEB`Ye@9ddd9Gm#*-*+0N!#HVkF-2hA)B5i))3'13b"6X39
  813. K`G1MU)6MIV#B#miFi,B8J-14[*AlH9!S3YK1i1%G"MGLRX"DVUZ!03ja3Lb9lqk
  814. Q11QM9i,V`!q%TM'V&A[UeJ`'FGI[r8m3X0iL'SZSMD%*bkHV(0QkqU(aMGNarT2
  815. 6[M#6AbSL`ch@'HlHS#1FX++VSpmE1&3+!GcpRAMPbDHb@'JL&G5lMmi6mL0Da6C
  816. %VR*))j!!P4ENj+-8pj5C2U64&8H%'LkcNrarJLFb@Gp5D&R13@5(69prH(j[QY$
  817. 0`f1)#eL)JR)GJ*XR$EDl2f`3mSf,98f6LMP(UMjT+ML3!,ASZVXRl`c#aQUbf#"
  818. IAXjBI+LVAAjU$@`"I"#fMpPhMXdP8HJ`1@LN(ebF3*dB!Kbq34m3iVXeV"JPIjk
  819. !j"B`V9V9&qD0T2NGQMG"mbM[dlY0XE(K*qd@IH"CRXVe"C`"J*fEqFYNrLq%TM+
  820. +pT*1D[i`pJ*QHFaN+N9ZAdJNf(q1kbRR&GKl$p`X%,1R#AkGfZHjT@rD+C62EY5
  821. TQjhPr[rA4ZMU!NF,A*l2`XIV&[094FHM%#Cie*pj(e`R`"6cC(@VaNSYh9faH4E
  822. Dem$h$69TQTH@FZDf`kZ014#Z*!fVh)$%(QT%l%#dch'NNml"a#eR8f'UmXiAVL0
  823. d399rITcp%[6,e6Fa'TN,4&reEkDCI*cJ-cR4*EaH5mjbRF[rALrMqBIp)#Ml,(a
  824. 2pj&qfpZ'"$GbFX2MC2X-Blpl&,mFh8!i*6mpGPdQlM*C`+q5(,ldLQ3@E5!j@*D
  825. pNKJX"E`m*)MHkpdDMMcN-%',`C%AGbGZ(F""LSZY`paJZBaik4'q`16aj%DFpC-
  826. cB3C1KiME@4p'"eQS$%c25,rI2%X3l%3ZEUk-h8ADLpIZPaIqi)H[fiZEQ)NIprM
  827. qHLm-5J"(p82"JD2rXV&r+SBT5$5"%3U[ReCM#5[Zr8UiAM[!-lS`h6ffae`ZV'$
  828. HLf&Kb&rBYAYpi6+HVQb`-'iIRm)G@ESK0cbN&epEXQJ-)eX$CYC[#MA9)36@EbV
  829. j)A9Ge[h`9-kPfl$X[[BGNZRh0Vr81Y40*Y42#el9TSNd5FedkcLGKk&kp9(cF3Z
  830. XllRk+pAK)FQb*lFb)d2PQQjd9J*THhYKNkb+#"d1f1SiNS2P4(c,3r`h9lSF80B
  831. dCdJmrH#8K"TG#TCT0L4C1IiBIh&IHU*j'53B$UD8iJNpZ##adiS++@"56'9!laJ
  832. jc68l1HFjAPk*G9P,ZhLX*qHFX!bqK!Pk@Z00dl0j`F!Cfc-,H0IP(T&J*cI(MjY
  833. %TE8"'H(AP)B89DGf,IGGA9b`-XCM86-mA'BSd9C+r1Td%IX5)mie[Y)dD$"pT&D
  834. -,L)N64Erar2f+)%KiSZkX&haiBC-hk,[cKl)-&mN'IS`R,B-J06LBH*"Kka06fI
  835. ,0S&Hd&iJQM)H8k42i-Z!R9p[#UG4P$`rI2I'"TiFTHk3!+e$If#@)*HF4!iU%[`
  836. 36qQIjY*@MS+(8X&&e&V8XIQN9d92`@(!@SUT#QTcGPJ8F%LTD`3iT#QV3p+TF8B
  837. 130RhXPqCYRim@)45Ijc9L&$DSimj&@)X@#Qlb5SLj-H#&YA3E3`iS-%CML$0*SJ
  838. BIRlh560BRqdjJ2ZNS89SmK'9SaK+9[S+@J@8h`'IY9I'E4G($kJmdN`5dMjd02A
  839. Ar9%*Yj8H1&Kq"AV@Gi%a)DVDS8c5Xp0N5d+%hfl85emIC'f[ICUM*`65rmQi-"Y
  840. NR0N29)qd%hDi%EdU)hU&b#*jBpSN#"21R'JB5C0[#cZ1Q&q1FeYjDiNF-bf6fa+
  841. 6e3ClHh#Q#+"*QU(%Dp")a-mdc@)L(1*9"C`%b"'[0ijL(dRR!$*)dXAdR4ElCEV
  842. (F3EAmcT"-rK@D%GD3YB2P'+BhTZHXFYb)iNrD0*V`(&KMkNl'a4,M8e8PbK5V&8
  843. 8TP9X6$ie3BJ5H6Fr1'`$$'a8Tj%58E9V3ETM"F21qUNiqm36J9RGTR8@Q84-QB-
  844. c5mfUkMb(LhC3VHF8$lEUDAN65S'6)b1brCCkE6FmCaUFT5'm1TdACGhhqJj*"-B
  845. -KEjGha[aDVG(U)*8AI6Fd`cd@-i48ECaJHDfCLmN"1k*pK'mJ-#D!1"L!-4(-XV
  846. #9KA@5&b%,AYN*I[0#hG)rTdLNL$T$"PhJ+r233P&%HQ4C%arT54EeGT$(#2BrlA
  847. KM'ErQDmQF-aJ!U*+QE@XfF3HJZA"`)BGlYJ@U8B0KddGG"VB(#&+DKB8AN5K-91
  848. 2C3YUjNr)eFXjE@3jlkMlIeR0f"IQ$VrPYB%PYdlBG*!!Xl01&XBDG#P2NdMIfJ-
  849. VflGT(pY*U&Qj'R9Ufq"@I'Dk,L!I%Cj#$ZZU1)%XJclVMDdB-Ea+5qNr,r2IDhC
  850. 9,+S2D-G$GU(iDKHIpG"'0jeXbMhV*[rrcbhCC[#YrV"XE36p3*@Ac2AD1S+ZT1%
  851. 3UdKP''hJ3*9D%GHmX0q49mQFJ8'l1%c[%''FY#lah8MAN@[c!-8af&X-1ZrZZ0N
  852. 4b+b!S5-eP"'`1Np%+d!Z4FKGTK+B2*&ADE[3NJKZ#YMefiE%FBdPLJACK)9m*q%
  853. BIjb0TNqr5c(5Z()$Y3-X,SL3!$[h*i5b(jXf+hVP%8rq943),lL)6%"+-!3T"IX
  854. JCaL8U-l!`+)5V"*#+Q(+!Cl$)BK*cLC"p-%&fHl6$KkfA'rdBIVk-*J@24D04TN
  855. (&T%'FY%R"Nk1[iMK&S0MB31d0LT1`R3i'd*D"BP*%lLC[e,11cq4NVcf8#13!*0
  856. 6lN!#4Z'BR!SmRff[c1k4N!$aklCcVrYC!J,dLY'i,1UB`2PN3Icm2%YME2j'ph+
  857. r`+,TU(k*#*S[GfHM*&"MPDCAV(Z10E([XY'ji!-jifc0kP!Q6dMT)5$NSNF2RYM
  858. BBbI'Q[Z'CLX"UHQ3!)3REZJc%KkDU3c"`r$BR3dKm2I$MF[2UbTlGUH$jm'fZ5f
  859. cjQGdR5C!,VXNSa4Rm6Ja'I%VB#!i3)l6@BcjU$'ir-H!L@BdiUEFeV!GAB*KPhH
  860. 2YfqZccMQ-V@##VIlm41!(iSMak(2+3QBSY[Z,3LNBq!&AEKRb4f+mDqH04TRIGJ
  861. KlMkEbXf+%Ji[`)#'$Q@bIaL1*fV@`)H2r`J)b*`rYj(dqIIS-0GECmEjSme)H2[
  862. AH2Pj0rd&#R!8XqI6d(6KMR39aN-G,MPAJDpG1%J+FeQ(15bG0&TkZmY@YQpKqT&
  863. -Y-pZe2Ip'SmpH"aA0$4Um"R8RZe$e-dee"AN9bhp9rh,%aZHQ*PmmEK[VVHb4TR
  864. qNR'2P8ZQ,l%-hSFH9lm6*CD+4E+FU6!Y8'G+#`B*ch23[mTq@'+ZZQ-p5l5DYZ1
  865. [@dBa(m%P"EaBa'J0lJ6eVC3&+(+Z2+Sbc4DGh0q"j(P1-Ck04GGj8X6TklUMAIc
  866. I0mdZLfLN9B0&lQp1MSV!A3+&TJNe#Vfmd2Q`Mq`U39-K*($iaYY'SbAPXeV8NrD
  867. UK-p4*JZH0HqeMVa@,QieMYDlB!QcZhENA"b3!'H0G3(p48p,8UHPd+RT6mbdD3k
  868. B"EK%S&r@IZJAPXIU#K1qDG*k8-p6(C12[BUQflr(Z@@YDJ(lLMl2kqjpAJ[lr8!
  869. ["!N-(lZR3,lQIadC)ppc+28r8@4X4T-qSY(Z$#-Lq`YpEAr)lrSBb6ImdGd(2I"
  870. 9qc6bYH-SN3+XpfDSe*KRZ,D#p)!TU9eQp81'Q$K%D*dR45hNVhMMjadL`LYG+-@
  871. FPC!!(N5,h9baLe0@FdXc&kR&f5e4$`Mp(1SFH[-4Ma8AFe@YDVEJ'p92B3HkClI
  872. "DSR)JCM$*lMliUJL!KcG@5%NdE5jqNHMlM'4&XdD+"52CHkJ"*DkFRKF!J48*G&
  873. 1*e*m*LC+e)CbIjFd0j(G$5hFhrN0D0YeJepRbc(ei23E6e3'a[aMEYL9VjlCC1D
  874. Q)UJ0FX'`b$jl$Bb!"LedA,c$#U'BKmX$!HB[E+Dh6jdDlYZ#'dhLfFq*p`bRmh4
  875. f&rDL-Tl#2K66!Nf8eC'MfdmSi2%Kjh[0,2dFmp6cdZ@qU)lpq&fcXUr%4ecX[lc
  876. mVU-kHp!IqZe%&U6i$brqYkmZ9lF`ZRGTYMBm1RCT*-,aE554Zelq'[,m0'SQ3T!
  877. !P'aKa8-RTh0#fCAMeBZIF`GI#brHrChf6r3-22F+MSKUr13alVKmXdh1F(`bGCY
  878. hX3`9baQj6MEm"3(6jp6FRj`ZQKjHh+@@LV@K0C!!R"i)D2TD!L9h,-%10lV!+KN
  879. C!@-)fQ&*EFF@5S#lUVXmCaB,IM`IY2k82fA,d00HaVA-2"1Mr&MfHPraq#fLUmZ
  880. (Lq8U[b#Aj2P6q%-rHE@M90A,mk,MGETd3@IHK)#[e6FiQ`lMG(b%JE1H!6`J!!#
  881. !4PGhH(PhD)TiLBU3!(ZULSGBHCU!HCQ*GhP`F!#BLRQ)GhGhGfH*H&GkKQLBQ,Z
  882. DPfH)KRH(QAKhLBKiUTQELkU)UE#UJ*!!QUZ+R+#X#lUEQSUCN!!+CjU,X+#VN!!
  883. ,UhUDLhQ*LUbCR)ZBHlU+R)UULjQ-Lj!!L)#DF)Z,S*[-QTU3!)BB!!%c4&GhCTH
  884. *Gi!!N!!!!!!!!!!!!!!!N!!R*#4@9QCACQGRG`Q)H)GjF*QJU!L*L!!*#CN*#3#
  885. U#CQCQBN+J!!+K#8!QTmZ%1c!59Vi3U0MTYTLlV)bXc&bI%M`-V-aSF6kZPUTe$J
  886. CNGj3qM`)J[h@lSI4fQcZl[@3!)E1'`##THa+'rld&Y0k2rcDr83Hq6qG)%i[c3l
  887. U0M9cFc&hppNj'2[-`&UlqYJYmZG-`*1qM`mAJEV&bBilDbY)pYQC'6NCQ43i#3(
  888. &T'&(D1bK#HmSEh,8MqR$3K84C)6a`dmA#PIELc*AQb[4PHM+j%VN5[6PHR+p59k
  889. NVPbZA+jNVQ5ZG+jdVS5ZK&,LPaDQ,8b[HPHp+dC@M+q#9m%VijAaa8m928AGhHA
  890. [IbD-Vbd"*1$&Zb(Si8dA#LlD,-Led9Y&EGPGlM#ffe3SK$j(j*pJbM[AM44PH9#
  891. &hGi9i"P22,T3%`lRiUAl1fUYCkrCHe2KTIrdcUG(2MbiDQfVBpK5rC8Ci2Fk2Km
  892. lb+AVbCdV8E2aS[Xq*&aphaqh!l9bCd2'`IGTY*Z2r1clb9h@2&QdT1$EE#PjdGR
  893. #RakZ1iPiFRm-H`Ni0R8N$ICeeEGFDI9l+)0Y9E9qeZZPpQKqr'q(A9mR"jdm)-U
  894. 1YU1((``Hj((lJ"Xqfdmr8@(E`Tr-iYVkYVmFR)YIMKUVAPI2pHPSckkflH&62de
  895. VTjQqVB@[+"lq&KlS0GHCe-r2Mf%+f1iaSX@A*aKHTT1#Nh@P[arcHKI@&9D@p(l
  896. hi,lmI&aa8KVTmF[[)8mUcS)(@%r8!G%d1VTp1!fVZrLTFU`iXR"irjT1$m(`bF'
  897. 6b)49@I#QNrRK&*`F2iD[`Yar9Cl$XFMC4C[(MVmHRMZ*1$[[NC[X4iGVX1ajPhm
  898. &E$rERfPF)N*m*AJXZil+kD%EaS4`QK(h'K&&S4R0#1Bd)paS4qpJ49e,!LXY@K$
  899. Ef+c[fK$BJV2)D%H@d)pPJ4,UQK(6B%D8"kJ"l&JI+61K!MhQ"%A`X#+RIQa(q@6
  900. N3e8)SH#d)Jd)fV3M[fK(%qV[&`2YBlL2$Y+f`fpVV*p6DG[#,(MMc)4@%bdXB91
  901. 2eTYai2&RFAmIJEIekAaBh4Y+f6i)3iQI)E!bSZYQD2qr`aIFhd,5bK9@'9$6AAf
  902. [3X$#1ZX1,(C3Uq0jGKKf[$Nm+2%`[qB9FQKVlL,PBa9h"8fNd)m5cPf2N3Tj0"*
  903. !-DrLXEU-bpMa,(%Nd*0'%GKL4erhpACF@6r@1[!c%XiFIjeK`bqh[kA4Xkc@j8+
  904. U1EXk)kH$(0f9M$YU2ee#0E4mU1E([)90RB`VSjS$4E+hKZmhU4cERU`Ul[V8ZVB
  905. Fq`jiH@-,((PfPP5ke6F8[qZpZ+A@QC9,Ul+hT8N"+1DJG4qrVF56`V,ldR"jRX6
  906. Cff`lbjZm(!QcSiia'pbCe*9E(P3PN!#R45&%"%@,Ub0PV&biILjYX+cXUA[l)MC
  907. iA+l0kQVVpaK2!KF)fDc%K(mbrK@i2Ze5h$BH&*SF[QXMek41VCeJdD0(-h'&[XQ
  908. cK*RGMfGEL@GC4blRpd+UldBZNLS#(p&R@4iR(Vb20'M`%P56Ji%Q"1[-#j`5"Y'
  909. Ce+DYXpG&l)5G[(NaHcVF1hlQ&9jXe'k&9QcpMAmhpd+kkal5TierXS)9C[ql6$Z
  910. "Lcf8NZEcClDE1RAT#A[c1TmLd+'9IH%!@P22lcK8Tpp`T8qk5(Zf`lIZ#([$K,Q
  911. ISqalm+lDhdrZ(JBPJa9-'*Yp2e"9c4aq90Z%"EfGjMfiX9QE2f&IXDMh,j3c
  912. FmR%bkTJ9XDp3M&j1*NX%XABepR@E,5CZkXkb61TDM"pfAedZ5m%Z5QhHe`Celi%
  913. iFZN699l)ELj"-#ZN!R6cIX&m'Q,i1R(qZ2pEKYIhXl!RAZdfSEG!TeDEK+6+HC[
  914. (lE%eZeZIdZBc@jI4jZ95pqdedA9iep-cq*mF)VH'a+MHFB[!Ydq0IU,8faKYX,B
  915. rNV25Y+r`VMNh'69X$YMAq&ITD,3[Z-3-PT1p[L$L!0#r",UJPSplIdZVFNBAIk8
  916. M)PiUFaS`m+EJ6X$#N5q+cV,1h[-(#[aQe*3Dqh'%J82&D!N[0i5iEF!&+ZMpG*+
  917. Sq88kq6GDk,pJ#IYlV[SGSQ'bl6Y0*SAGl*1[GV)PpA,6$cA%#&+UTeN8A!G#MQ@
  918. G64i(G$j533jp(a5U95@'jqEr6XDrDhmZrK+hYPCe1bdJ2Fi"0!"2AcIX5mU&E5j
  919. f0@M0E`PC[q3[GR4qI2UD1(2LSiC!(3Sm"Q2$-QVc"[j0YJi+U$0A'C,*+K*&J"`
  920. -E,ZB86+,8q"K&-1@0R[)d%48b!P(lS6HmEI2M3%A8!$S9U!P(m5*#!P(lZc++Br
  921. FA1M&l4!A3FQS(%dmL8ik#j4ITQC-AY8I[KKqh(UJ5pZ6N4@iRF3"1eHG#Nbk*!6
  922. FkPL2FHV%HqPK!%pc0q`'(6@KRd0p9fF%Pk61q,US,A@2Qr3F[b[X'jQc,c!ABJh
  923. 3+Afa3kb,k!`mXhYDQdl-irH&Ck4-MZaF!CiDGLh*r$#,'8B"E1"+GhAL3UeMlTd
  924. I&@G2$G#5m#1RCTAMTCZ6X+q1bTG,mA)Lk'0H5lf(%aSe)$03B2`CZmla0hA5Nc[
  925. irEqC`Mh&DQIU`Qe1pVRNQ+@B+&$#"DD3!)D$)Q0A2EM`jQm,1IhE1["MmN`5P4+
  926. aYc&jr*L4G&KiSj[MZ&mcAGc#+,kacBT5lk'PfqH!e0Yr9Xi@FS1Y)PaafiI@e0I
  927. B9mGIbSVb($PBqTY[8K+"c8&"XaVC-$MjHhcl-dL8f6qlF28"TRbXIA"K%d`['Q&
  928. GM`l(RQqU(Bj1f!DPj'h3-iqfZ*-lq&JjZq-b*Dfi[X!hK2Zm",r1NZ4925k`qC8
  929. +J#29iFS#UPJ9MedB84iHqK@f-02,Z)8Zrclb(c,JdLEJK1[CXiL5l6TSjcdeJ$%
  930. HChm18jMpl(YB%k-k$,j%,f-(XkE!AVq`JfcbMD0Ta61[RY@([VFc#QhS02iHS0I
  931. Ud$BN$Ei0HVkdl!lm((`DjIjlQl3FI"Vf1AJhVr-[r[mqiIM+i0m[QhHd[1q[G`m
  932. MLFVT9DP$$qZY-B8'V4L&`J+kFFd&*I'-DMP-JYQ!YS4cEUM#@"Ak%&*A,!Ve&#Z
  933. 3!!9q03Vd`+SU&HS"AR%%@-0A&F5SE1i+c6Bl''SLiD@+C$%VQ"0idFhI9(iU-03
  934. E%XPp*1G2R+%Hp2`9#0'IH+%I"20``%I(2YPC+HIVLrc6E[@k&aDI1K8bIaK&5XU
  935. AH8T+AJ8Yc5bDAdDA$KUUAVdY#PckA4TG@1EC@-*I*r[K9Bp5X%HMh6hlD2p2ccC
  936. YcIhVp[6pUm`RbSUi$rUIh#KSccF0+Z[TRSHV06"ppLIeZCHh1eGM5GqEplUijU#
  937. 4hXeUG)8"'GXk52SFfE15!AG[(R)A83LMQpfGP-+P3M6)-!4,K9ZZ9IXHX`qHNcR
  938. c1TT+fhXSI+lK-LL!R5Y*RIpfJ#DXUci*Vc9BfSff%DijKT,Ac-rZVL'URc0RIBd
  939. Hi8@1604(HRJhNTd2!6Y&[6e-qR6UlXUcCrAarP'T*2`,5cQI8K*A,AIS@9H9je8
  940. QGm(XPIHLebe-QKY,R!N5l**`AHR9*hhlAE5A0dCKVN#FIceBlXi'aN!Dik3k,#D
  941. 5pfkc3jYS1V2P2HXVIp*3L6+fI9U8FL+fRdj`[rHr0HAJ[10bH0R66aXf9[el5kr
  942. "[U9R"[Vql+61rrprVF39CbF2-hl4`QP8[IaZXFl2*6L)mml1AcEQk`YY1MFKSbb
  943. U`XT3fm1R+ZJ1Y$i*D5R-b$kZ3PGEV*m`8q@QNTP'9&i3TkDeXV3#0)Rf*6l$kT2
  944. dbRlT[YVHhbI&AVai&h*fV!T2-#P5TGJdJT[brPp$bI2c[2T[brKp#QmVdV#Qc[5
  945. qGj+$#MRpXG0jrc`%h#"&a6IPmhKU-)#IjdUAmA!a`)p(rlrakhSkH`Zr4eJ#A0K
  946. GdH*BAI'rlrGkcSN('RqSMYf!&mEkJMSrJ-5ajkr3kSl+'0#`KeZ,BhC*Xha+'63
  947. c-[+MXF,Fq(3h@Bhc'lI5pr3hr!b!B5H3!0Gh$U`mD9fe28A1jbq#RmPUE%JIqD9
  948. T1,-ZBq!X#RRjGjH9QEr,b5"FUKNTrcH4ZU%H4P4ZiFXY,TEVapK(Y-MGEc&#ECf
  949. 5'qraGf[TZPfp4iF1*$kF2c8qNfZAZmHK[c3"DV8m+q(pMrZrDKVhF2rA&l@lbpp
  950. iqr6dJMcBqlerHDrZYIhHZH%0U!5VV``RKKiVZ*FMJ4l5KPCK$(dXAId,+2!aSr(
  951. bq$(`H!5lQDk2-hP$+Mhf63a33i'CLjP""+2'a4ASC!&lp+"KM[im9+HalR,mD2,
  952. hmHlbpe`Gk3[LT$0NQ(GI$A3q9$diG)S9a2UeAAY+Z5Kp+1mb-A*bcVhHrr9fIhE
  953. 6XNXTUT95Ij8RSQIG4E33KMC@rh@B"'rhHkc0b"(dff[mTEA`KpbkN[-%#22@fX)
  954. Ihlh&h@m!M12!r")Tr3R[q"$h%r$#rNh[XAi6Bc@!Tp@(IB[apH1P5MK@l%$2Jkp
  955. T#ZJF93-ki3DX$1'c)P56LJaSY$2r!'G9!`*2m!-pjJCTrm3-k,#66rjJCd1[D)-
  956. DLJX%@N1kMKfH3$(2UrQiNfKNiHrbpe`*EUXE,,kE#qPP&efrSF!ZYh9"JU!!!%&
  957. rU[%!#3#43f4PGP0VC@aPG'pZ-Li`)-3!#!G$3f4PGLj`!3!!!!K849K88%T06D6
  958. 9rK'Nee(9!3"X#FJ&!!3!!!!!!!!@(3!!!!!!!!@Q#d0$C'9f5@jdCLj`!3!!"Dj
  959. 849K88%T06D6A06bNed6C!3"0"@8-!!3!!!!!!!!'f3!!!!!!!!+r#%0NCAC58e*
  960. $!3!!#'ebFh*M8P0&4+)YMXDNedaV!3#"NfHj!!)!!!9(!!!!!!!!!fF!!!!!$N0
  961. NCAC6Df9XCA4[EL#j!3!!#p448&*+8%T06D)YM3kNee,N!3!d8T0G!!)!!"bR!!!
  962. !!!!!#T%!!!!!"d0-DA0d,R!"!!!@C94&@&435Ne0SrK5,D6A8+%"!!`'[*S!"!!
  963. !!!!!!!eC!!!!!!!!"&J,3eP[GA*$C'9f,R!"!!!D[94&@&435Ne0T0B)@k6@&1F
  964. "!"6#%Gd!"!!!!!!!!!GN!!!!!!!!!ZX04'PKE'pR9A4TE(-ZF!%!!"fS9%9B9&"
  965. +68fNeJeiT0G3d`%!8bFJU!!%!!!!!!!!2b!!!!!!!!!18`K8CA0d)%4PGJ%!!#[
  966. lBf4PGNe+3d1Nee*rT0G5KL%!'m*Ni!!#!!!9a3!!!!!!!!ib!"!!!*cq!!!:
  967. (This file must be converted with BinHex 4.0)
  968.  
  969. :$e0[FR4*EQPdBA0Y,R"TG!"3593J8%P8)!#3""Yb!*!%-F*36@%d!&9J"+aK)&3
  970. *)[9(TUB*M)bQ8mU01@*H*S@bGP@AHU+5Vmb5"EdXS*C5kPV[03ZC,9N8*-df%-D
  971. DEcp!53q"XG1Z5d9-#8bLL@N@BQUPcLVd@h3N&5Xp`#6U3-,R'1r4QSmr%P8B*&&
  972. R'eKS)K25AdT1D`Ze$Pb`V(E9dKZ69CRGZNe)cMfHPlYq!*lI%J!J%!J%!J(*S$J
  973. %"6NcbC!!"Em!Sa!*lIJ&)"bBJ%%!3#!@q!#!3#h`!@r!(*J!6mMq4i!J%EPbI'c
  974. jQQhi!J%!J%!j$)k!3#!3$NF!8C'mM@4R)`hrEr0r3!+@5L)K2QG`&*UCR[JI&Ba
  975. M'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BcaI&)KYk+b
  976. aFE#l@j4Q[Y##,,Bc5&'CFmK,99mQj2*V%ZHeaBklCj&NC6[&)MfQX#,!T03PQ+2
  977. %j18G0C!!e(RLjj!!Y00)d8pESXPQGb0&'CD%aHd(*dGY#H+4'FdMXb)Ga$4R+Lb
  978. M2NG2A4023JLUF5icf3Sm5Ld@5[@bShLN'FA2*iT%[R4RK,Bfq1R*Ri[LN4%3dk2
  979. FNb$P8MjY+TC%MZ!D3JM4%#$l$e-,*,NK&"M-ZH3Jk1%MmF4%JH,iV'-BaM'-BaM
  980. '-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'Iii0b`J!KP)$VBEGV&
  981. HF2rNr$,NVAaXr!0rii,NSL)'kh5bKJ!S0*GSTT%KDFA'+4%4!h@kH1#M-#5!e6H
  982. bKJ!Sq2fLQN5&TaFBXS`LQk%j*!DT[ic,E"LL+*C3`!8"EG*'pD+-bfa"LL+)@4*
  983. TT(IPU12a`*)$90l+'!#J,bH"!V46+1)`e-R*)$90rpmE2`$B@31R([YEB$k1Q[Y
  984. ##$ZrcfQX#,9klCll3NTpjj!!#Ne-Le0S4$M`9&`Ta#'fd)XY0014DrY!K4NZB5b
  985. A"I9`$M`DdA#R&ZNe#He0S42Y!K4NZB5RJad%m&!!5d9bETZ()iYdQS6fTY#*pS%
  986. +-Pc#@#qVJ!)G"2"3,4A*ZQiFMLFR+1Q@QQR)YIrDq!'`C3FI1I9rD"#M*F`P2"M
  987. Q3AeF#dA&4EaFmKET03RY6D%6l4l,-T2J)lNhAE4GM+6iZH3SmQkrY#5Rd1dY"h*
  988. ZFH#qd#&'5jbGJ[Ui!#(36`8#d9bETZ()iJFM5#MbEVra5QBD*bNbjj!!M#0%ibR
  989. 4QRrD"#M*F`P#L0(i!+6812"@Li8iM#0%ibR4QRfj1[i,"2"3,D,'H8C83Spp[LP
  990. S33ffZ3KScP3Pikf3!,8fLAV+3R*KL[NF[lIY#$Jf5UHhMJGJqhJ9SUmGE)8JcLA
  991. cSc`PL)SXJrpS%+-P!jK,#h-KEf6Kiq`m2R-J[Ui&&AV+3PQh3KScP3R*KL[NF[l
  992. Im8K$DD*AVC8Ea4RaLh6FcPArYI!$B-S1(cReIfJ3SbA-*3F"FN""m'$lF(fac),
  993. kZ"4F9&[%V2bj+qd#&'5d(Eac),kZ"D,MVC8*[ID2!1RB%@C4fb@d83fQLMa4RpT
  994. m-)C3F2R2Urm8TQ'Lf-T2Ljj#"b0)+2*ZXTQ'LM-ZH3YdQS@TY&XEI&6N*i`d@qT
  995. UT$513Y00)erf[J"X'8((cReGY&FLdGP)5mGE)8JcLFLe"1qd#&'5jK,cb!8QTN@
  996. TY#)FH2d984-5h5DQ4DQd)K4Q4irpS%+-Pc#8mI1C"I9`,4F9&[&([Y(XXbNq!MZ
  997. 6GGY&f-T2L6FP-IY!K4NZFRB,kZ!!Kd,GD+U)Q*!!14T"4j0eP'C3YhfJ3SbA16V
  998. E5d(FQjd)IY&9%6%Jl5d+2*ZXSc+%2rpS%+-PX,FG$*,D,XE&9+2*Z@aP*ppVi!E
  999. @%2R3b5fLl'ha8j!!JFM5#QJd8H6GG[fYT3b`QQKq!#Ne,4Bb#QDD(%0*N!"b%dD
  1000. DIEiT"C+1+CKSKT-Jj#FQQP8Z-64Ljj!!R*S3KScP6-L2EL'SL#&LD-q,M&cb&XS
  1001. jb6la5MbEN!$5C"b%(+"`F*'H(-Lb8A,iiPUNF5ia4l2rY!K4NZB5`6aq!FHh@d9
  1002. IDGaDiZH3!)16$'Fic`rDI$$R*d("JqFHh@d9DT(%RNddM[Y!K4NSC3F%G##YSZ`
  1003. LDF4P1*k1&iXG1ll3)8C,QfX%pZJ!)G##Y&`TaG(K%)4*iHHqdq'(16X))ipZYSU
  1004. e51*'bNF8Hqha5@U4a,RN+DQiFML0)+2*ZXSc+%2rEpVE!IQr3e!pckT(&YTDHqU
  1005. 4aED@J3aXIY!K4NZED`6fk!G##YSZ&1+2*Z3L6`mppTm-1FRB34alGE49UNF5MbE
  1006. rDI$#'CbG"j)FHh@d9DT(%K%RKjiiXA'a)19H4IKU"lRe51,E5dYqf&YJ2X)I1I9
  1007. )iYY,3)Bf2fq+6Nh6F14aFmK5)ZAa4j0b'Nb$N!#AfRG'H%KU22IpS%+-Pc#8pZ1
  1008. 2$rfq+6b16),,RN*CRF3KMBjN@@EI(6N,RN,C4cNRa4j0b'SmmA2)8d$h%DD&UE4
  1009. hLP'3!&(XJXK%$dGY##+TBA*VNFF5aV@*FmQrqqCh"$'a"ID"#M*F`P2$jalGE49
  1010. pTh%04jiT%A,iM66hc1i)Bf)0EpS%+-P$+$JMS3AfJ3SbA0YB*lG!1K"ID%P2XNJ
  1011. RYad)+!FH#Y&f0[LTb&0!pa'QRfJ3SbA-*6`4d,HYSVNh6F14a5$1)6A)llIY'ha
  1012. [0YB*i+"E4BV+2&cb%*TI0pqeY+'C[d032F1j(Dk*TfLaN!",-F5e512q+5Ld*AV
  1013. C8Ea5$1,RN!#AcSc`PXEI(6Nrl3)8C,Q%TlFFH$IDq!'`C3FI1I9fd9b,4f8K,ae
  1014. XK5$1*b,8%ll3)8C+'8("(3JhfJ3Sb8-S1#1K(rY!K4NZED`6`D!!Kd)0D,K6L"P
  1015. m3L6`mprLP'38H)16$'Db'Smm8e""$L@U4a+2IpSfq0jYV"2"S(fYJfA0qJ+J[Y2
  1016. KK$+$Jaai0rf[J"X'8("MS3E`&3AfJ3SbA-*6`BjN&pA!Y&a8@m5qG'H(l3)8C,Q
  1017. fX%m&!!3k%IY&`Ta$mfL%5H(R[m8QSpaLN!"R%Y0M6D*I1M2$rfMEihQfX%m&!qe
  1018. X'bj[d"8'qdq'%-S1$((J[YI!$B-S1$(3MrJ+JhfJ3SbA-*6`4c),kZ"D,LSYiPm
  1019. k-m2fJ3SbA16X)-Fb#qVJ@LiU,H)'Aa#*2$chrD"#M*Fj1`Mjc),kZ"D,LSYiKqE
  1020. 4,jdCiIqd#&'5jbG"`B%Fb#qVJ@LiU,H*D#*YaRID2+pE+MHYY&M2+-U)5qG'H%Y
  1021. MEikFRfJ3SbA16X&pA!!3k%&D,K6LFLe"1qeX%PcISDJHiGbEfLaN&'C'FdMML@U
  1022. 4ara5jj!!T%A,iSmQj4@@&bDj(&cfTPcb%Y0M6D1*CL@0Da,RNhc)XP&bq,Ff8Rq
  1023. +8L,Pm8H6FSciaD,Nha-l6P8K$EDk*TrpS%+-Pc#8pZ12"@d9CP(E)@QQR)YIfYR
  1024. m'Ep!G1I-SlC!L6qd*+I@$mNEd%p[3$M`Dd9T&p'HZLDIfMcB3fbS"0P*rLPZE+3
  1025. ZH3PTXDE44j0b0P)iZH3T%A,lrY!K4NZB5`Yiim&E49Q8GXKDDDFLerD"#M*F`P2
  1026. EMM`DfLY)[Sced66,666N@[rYE2i-hk!kFqC4fb"%RpSmf%0XU!6C5IiTEQbN,RN
  1027. +4&bq)1eXU&'IfrD%P2V"q50k#HhS"ai+d9CP(E)@QQR)YIfJ3Sb8-S1#1K"ID"#
  1028. M*FfeJRYd!k%&pS58qb5#Hh(3JS"ai0D+dLqM2A40-Y0014DrY!K4NZB5RJad,HY
  1029. SXd'LQJHiSmQrfYRm'Ep!G1I-SlC!L6qdHE#'f9!*XT2ra5QBD,R+TFmK632F8H6
  1030. FiJj31$K)c`NdBDQ5NqL)3dQ3!-T#FQYRND,RN!#$MGaYrm032F1j0rY!K4NZB5`
  1031. YiipZYSZ*SciMfiZ-8d$h&(NhqeYJ2cIVjRF%-E%'Y&`Q,&6LMa4Q4R0)llI&)"d
  1032. jmbMYN!!L6++bd5R4%MbUA2DiR*bMTV,RN!#%5H(RL0),RN*I1M2#@*Scj'[&,M%
  1033. (+T(JLa%8@8N+-bK"Cri$TcjP(E)%5IfJ3Sb8-S1#1K"@dAB401+%&pS%+-PcE@#
  1034. H#J(3JVD,K6Ljj#%5H(R[Y2KK$+$b3k%&E4Bcf%8D3K%RKjiiXA'a)19H4Ifi"Yr
  1035. lI&)032F1j(Dk*TP&CFmK"aZifj'N&cb%C6NF3KMBjN@"-8ea4iNQC6#mA4h4ILN
  1036. T2SL&(XJXPQGb0IiDJHiGb1ed66rlA`!f$+$Jad-NYSZjR)A'*ScIIYE!10j[emc
  1037. Z#'0L#Y&M)*CML`Q*Sa4llI&)D6)13Y##%dDD%Xa0*S33ffZ3!*I'GV#Ka14I'FK
  1038. 16$&I)jCDQd6Nj4drq%dd2`!8QTpS%+-P!jK,"I9`!%1KEQ3Yl*`mIBH(k+j&mCb
  1039. %0'FU%j--9mMPrD!!d**92EeY&FJLD@K,l@bS8KfYdqhl3)8C,Q%[2*J6P(62DDF
  1040. LeR(JU+j0MC51*bFSkCDDDFLerENk"9f#H#J@d8198B(+U0r2Ym8M+1)3ffK#bY1
  1041. MS1%4Ircb!8QTN@TY#*pX1AR*d%F#rRN`*bMTRY014DrYKbmj1JMJAYY,3GbErE$
  1042. PjbG"H&%D2`!8QTpX1AR*d%F#qha5(6AfK""h&&CFmK1-TdCSA2DiScAfK"&Pcb&
  1043. S10P)8CPcb%Y9AbENmQXImG0ID%%(GrLPK6Ljj#dddj&V)dJZH3YP(15I%HdeJ4B
  1044. &*U%ibR4QKDQd6Nh6F14a4lrY!K4NZFR3F"B-(i6S39S[1eL3!1K)dJMfQX#,!T0
  1045. 6l4i"diEGV%pTTb,AE4F+F4K'Ldddj&Vqhl3NTp#L0(i!+6812"[Y!K4NZB5RJMS
  1046. *i0!YSVNh6F14a'%D,666N@[r&,Bfq+R)5iJ-K'N&XCT#e0SY##'feb&'C,99mQj
  1047. 2*V%iZH5CEQbN+2&'IrD%P2Tl6@"&UpGXmFH2rD%P2SkDqd))1iim&pS%+-Pc#8m
  1048. %G##qem!0X`P2(cS39Y&f0[LTb%Z)$*pS%+-Pc#@%%G#$@d9bETZ()iPa!C2Yqf(
  1049. ,cNk!Xq5!dYY&d))EEA)8CNY9AbENmQXIYE"XY$6$TVl3JPSXC")jaR(<2[Yqd
  1050. #&'5jK+H#1K(lD+j0dh$NF3GTDID"#M*F`P2"((JeY&jlAC!!@A2)65,k-pG%drY
  1051. !K4NZB5RMjai+fLRY0B%@Vefcd9NXbMYNqd#&'5jK,#$(3JVD+Y1*6%Pa!C2Y(Q`
  1052. KYP3#E+5fLlQbN!#Ma4RrLPMVYRLM-ZH3!+D$41-TdCTrfJ3SbA-*B4mim&E4F+F
  1053. 8d'Ldddj&Vrl3)8C,R*d(!@$"q%k%&D,cYBN1K)dJMfQX#,!T06l4jp1'hDa2DDF
  1054. LefdA(AE2&(LM2lI&,3JK0'QK,-5"k2&aL@mJJRrEJ'hrm8RY6D%3ZH3NFicLfdY
  1055. #$P8Jj%aM2$rKTKdepS36lF!frp[LXBaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'
  1056. -BaM'-BaM'-BaM'-BaM'-BaM'-raIm8Lb*()89Pcb&XCT#jlA&&FmKaBkGa'N&cb
  1057. %1$4`f6N@C4fbCN3lLFQb4bNAiT&XDI1-)3dmNbjj#eML*(EA40-SV*bNbe0SScA
  1058. fK"&Pcb%1R(LFLc+1f6a5+-bjj#@UVj0bFLc+1f3T%4%cmAa@-BaM'-BaM'-BaM'
  1059. -BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-BaM'-rhqdl[m8T%A,iY##'f
  1060. eb%Xfk%!b1-M4,aeXK"bU@`LDG'H%Sm4T%JZH3PpVC8rl3)8C,3H5!`-G##Y&QL0
  1061. &S1-Ta$mP%(+[)[mX401#'0MpZ@%`CK+b#qVJIE#f`(f%%GPL*T`3aXIYm8ScMdG
  1062. #4!C#$&)l+N,Y$4DQdA2)A'-)f-([mG125CR#0IDVP2V!r"2NN!!Y&a8@m@QQR)Y
  1063. C'N%'+4f9)AD'LbY1ApSm1R(J(GU45)L)U,'FHMS5)$)3BT(C8KGSDqdH(6Mf502
  1064. PfLaR(Sk%L!b&cb&)02Lhe2@&(ID2$Tal,8FXcV4F+FA2)@R1-0&XSjCRID2$Tak
  1065. 6M0S`dZd@-ip(3N3'3ZH3!)DM0S`d@qTk`Sll4iG12!8QSZd9U2FBT"R&ZNe&rEp
  1066. Z@%`CK+b#qVJ@LQ8F6Nf0P)j9,&aYLLXL$4`6l4iG123ad)E#Zd@-ip(3N3'3!*U
  1067. 1K$B9rD2$FSkFHYSZTY&b"lL4U2(&aMIiT04AL*T9,RN+-j!!BJi`Hrl@cq#`aAL
  1068. *T9(6N!"QaJprLPXEI&6N*F3'3M5#("SiE*b,-SlC#ia"b&TTT'[qd*+IAqdlJXJ
  1069. G12((MrfK*6krfRFFH#qd#&'5jK+H#1K"IDq!'fB5RMjd)+fLl'ha8j!!Pa!C2Y!
  1070. K4NZB5`JMS3DfLZ6G0`j(%Z)$*rLPS33ffZ3Y%pUE3L&)-iZH3K`D1'bFLc+1f6r
  1071. YKbmj1J,2NJq2fdA3JKYYFKD*DU[)NeL6fTY#*EpVB0PSDBG0ID%%(6MeSXC")ja
  1072. R(<2[qd#&'5jK+H#12EVD+j0dh$NF8H+-b2E[m8YcC5&'CFmKE'D6rY!K4NZB5
  1073. RMjai+fLV-TXK4@8CNH2rD"#M*F`PJRYd!im'YSV5,k-pG%dlIY!K4NZB5`Jad)+
  1074. fLV6L8a*F3'6l4jX)EC8!QbNYSZjXT#Ma4RrLP[T83PU13SpN&P-h&S4bDD95M0I
  1075. D%%4VrYb`Q#XJ[Ui(fMckGJ4B3fQVD+j&Q8GXK#'de'H%M5*(rDq!'`C3F2R2UrY
  1076. !K4NZB5MTal!0UZ+(-J[Ui(fUj6kqCh+pGXm'kh6l4i"di0eZM@"&Q8GXRfJ3SbA
  1077. -*B,kZ!!Kd),l@dSCFP'E3kFH(3riT4l),,3MNddUPcb13iPQ*bEQbN+2IpS%+-P
  1078. c#@%%Fb#qVJ@LiU,H*b,-SlC#He0S42Yqh,#B-j1XJ[Ui(fM`!@Q"&j+)L@d94D%
  1079. Y9AbEP)L)RfrD2B0mT-#,-SlC,D+j0cC5&([m8YMEiUFKFmK$S5ia+,3T"R&cb%1
  1080. $4`f6N@C4fbIq5M0SG12$SIY!K4NSC3H5cS@kfLVl6Z)DMca$S5bE+5rYmF'MKXG
  1081. #%-E(lA`!f$+$KmjpApS%+-Pc#8G12B"Y9a3jN!"I9`,4F9&[%1$4`hpS%+-PX,F
  1082. Fb#qVJ@LiU,H,RN)G$pSm!kGJ4CP(E*pS%+-Pc#@#qVJ!)G##Y&`QiSmhhl@dSCQ
  1083. r6fQKYj!!G12@LaN&-h(%SY#jlA%1Krl6iB3bJi-G#hIEPJ9HFR3GZ(cS@ll@`3E
  1084. cISi0($Bk%)Bf2rDq0eN&pA!qdHI6X#,#'dep[fJ3Sb8-S12R3J[K0+jaR@rD"#M
  1085. *E##1C"I9`++j0dh$NF56jbU@aQNqhlA`!f$+$Mjck[l3)8C,B34c),kZ"pZ@%`C
  1086. K+b#qVJIEpS%+-PcNlPU12a`*)$90cQ3AeF$l4i!,6!LmP%42qhrY(Rq0LH)MZqd
  1087. q'%-S12R2Urqem!0JbJi-G"I9`!%SZaQN)'ElpVD8-cIZ"!iaZqhl4k824iE-qmJ
  1088. JRKTKdepS33G12ID"#M*3bJlFG##qeYJ2cIX*TA1-llI&*q1q)LU6N!!iaZrm#"a
  1089. MGpSp+(Sm0QIH336r&),*4aFmK$S5ia+,3SV+-bKEML@BKT!!YY6,664FmK14CP(
  1090. E*rrjl63fmJkFHrlAaZXJ[Ui(fMckGJ4B3fQ[Yqh,#B+b#qVJID2!"DB%ANSL*E4
  1091. 9&SA2)5e9I*Z8L)LIEpS%+-Pc#8pZ1C!!AeF#dA&4EaFmK2DQd)RfJ3SbA-*4dip
  1092. J'eA&$Q3AeF#dA&4Ea$JdF0rD"#M*Fj1`Yac),kZ"D,LSYiZH3Kd2fUj6kqCh+pG
  1093. Xm'kh5dA&4EaFmK6eZRfMal6@"&Q8GXRrErf[J"X'8((cReIfMf"&bZFChfMEihR
  1094. *f#qVJ!*pVB0PcISDBG0ID%%(6Mhq+5diZH3YGcSKbR)[rY!K4NZB5RYac),kZ"D
  1095. ,LSYiZH3R)XbMYNqd#&'5d(NXI1C"I9`,49UUmL6@*`KYP4'MLfHe2#MAfMckGJ4
  1096. CrFjGY&@R%dNM5JR&VZG%18j&riT$6SmK4iM+FA2*-P-@YFKFmK14H5L)RrD"#M*
  1097. F`P2EMQ3AeF$l4k6G(N`)XbMYNrlA`!f$+$Mjck[l4l!LjA1-ll3)8C,B,kZ!!Kd
  1098. ),l@`E,3d`kDqd))1R([Yqh,#B-j1XJ[Ui(fM`!aDebB%ANSL*p[f[J"X'8((cRe
  1099. IfMf"&bZFChfJ3Sb@`AeF!"$S3AfYJf@KTKdepS33G12IiT!!FRFMLN#+,H,3JKF
  1100. mKC4K&0dArrpS%+-Pc#8CPYJa4&%!3I1K"IDq!'fFR3H5`4ck[l3)8C,Q%VkXim&
  1101. q5%8@m%-E(l3)8C,Q%X))im'qh,#B-`P("FP%4!h@k36`8$l3)8C,R*e[R*F%m'J
  1102. ($JSc!NJ08hJRJS(fMf5%8@m--*rfJ3SbA-*B*i0!1K"IDf$CFhlNK&&["$'arl6
  1103. iBFj1JmPJMReI[UEE)YFSHMe[fJ3Sb8-S1$(3J[YEB$l#D9cM1rrr!JLD@Jl[YEB
  1104. $mhkqTYXLebKk2IEp[LP$&H)QP8G13CXB2<bb8a,RN+-ip(3K04d)E$r`aAL*T
  1105. 9(6N'E'$hrDq!'`C3F2R2UlD,[T83Pikf3T!!Ca14DJRID"#M*D$Jac),kZ"D+e(
  1106. 3KX*$S5bE)'qh,#B-`PC"I9`,D,S33ffZ3KU-fM$44Q6bDaqd#&'5KP"f!ad),l3
  1107. )8C,Q%X))jN&pA!Y&N!$M6lFbq)DM0S`epSm!kF'S03ad)E$E4Gp+L&(Ljj!!QSk
  1108. %0Kq6dkEif%-E(lFX*Jc#9N&pA!YSXc&)L*b19Z0YpUZ8qX(`3+#I*)&SZ)QYN!#
  1109. N'F6N@S*hfM`%c@K)Bk%0KYSSLF6CbQb&)6YRL6+5I,qhl3)8C,R*eJq#"36j*!1
  1110. K"@Li8iR)Y36[YI!$B-S1$(3J[YE5KQEpNp1Q&NUfLaN%$(&(PN&NVlA`!f$+$Ja
  1111. d)+fLlDRXJMIIYE"XZEpNp1Qq0K$'aY&M)+CZ1)3aXIYqdHKL[%biBk%0Kqdq'%-
  1112. S1(cReIfMdSHM`fCpj""2Yq6dkB@5[Y(SBVa-Z'1K$BIY`$Erq+5qG'H&Ca*fhq1
  1113. R(X!fUiTpX1AQfZ3("SiEb([QGb[AE2"ZYdqf(,cEA*il)2QGb[AE2C!!p[N)8%e
  1114. K0!,H`8NS+k&KVUT5%*M1fS`TR+brHD%GV#LrJNXL6#,3!#iFCV*'D#c,A,KGE+Y
  1115. X492##"A+U)$D5h&cr9*)CE)E,d!T&+Nj)[Pa4qhb-Kj&99L3!0SK3@dm"$DK2Tj
  1116. AL['bG3R$De0'DK`$,+UQ&8[1@+P#C)MXJ2QU%GAa[c!8LhPaEc33c[Im(rJY3&"
  1117. &EQ3pY`!!!:
  1118. --
  1119.  
  1120. David  A.  den Boer
  1121. Musi Computer Products
  1122. Macintosh Users Show Intelligence
  1123.  
  1124. umdenbo0@ccu.umanitoba.ca
  1125.  
  1126. 
  1127. 
  1128. Path: ucivax!gateway
  1129. From: wadew@ducvax.auburn.edu (Wade Williams)
  1130. Subject: Strange Think C problems
  1131. Message-ID: <9208062210.AA07425@accs.duc.auburn.edu>
  1132. Newsgroups: fa.think-c
  1133. Lines: 30
  1134. Date: 6 Aug 92 22:08:40 GMT
  1135.  
  1136. I'm using THINK C 5.0.2 on a Quadra 700 with 8 megs of RAM, 32-bit
  1137. addressing off, VM off and TuneUp 1.1.1.
  1138.  
  1139. The problem is, the debugger keeps crashing in between the time the program
  1140. finishes linking and the debugger's windows appear on the screen.
  1141.  
  1142. After such a crash, double-clicking the project file results in a message
  1143. that "the application that created it could not be found."  Double-clicking
  1144. a source file results in the message "..could not be used because it is in
  1145. use."  Double-clicking the THINK C applciation and opening the project sets
  1146. everything straight again until the next crash.
  1147.  
  1148. Does anyone have any idea what's causing these crashes?  Is there a new
  1149. version of THINK C for the Quadras?  I've experienced this problem with no
  1150. INITs.  Again, it happens before the debugger finishes loading, so I'd
  1151. think that would rule out a problem with my code, wouldn't it?
  1152.  
  1153. Another interesting note:  trying to open a log file with MacsBug 6.2.2
  1154. usually crashes the machine completely, the only escape is pressing the
  1155. restart button.
  1156.  
  1157. Any help greatly appreciated.
  1158. -------------------------------------------------------------------
  1159. Wade Williams                        "One likes to believe in the freedom
  1160. User Services Specialist          of music, but glittering prizes and
  1161. Academic Computing Services    endless comprimises shatter the
  1162. Auburn University                 illusion of integrity."
  1163. wadew@ducvax.auburn.edu                          (N. Peart of Rush)
  1164. --------------------------------------------------------------------
  1165.  
  1166. 
  1167. 
  1168. Path: ucivax!gateway
  1169. From: king@acpub.duke.edu (King Rhoton)
  1170. Subject: Re:  Strange Think C problems
  1171. Message-ID: <9208070140.AA20788@raphael.acpub.duke.edu>
  1172. Newsgroups: fa.think-c
  1173. Lines: 4
  1174. Date: 7 Aug 92 01:41:01 GMT
  1175.  
  1176. I think you must have a corrupted system.  I use think C 5.0.2 with no problems
  1177. on a quadra 900, 32-bit on, caches on, and over 54 happily ce-existing
  1178. extensions.                                                ^^ co
  1179. King
  1180. 
  1181. 
  1182. Path: ucivax!gateway
  1183. From: de19@umail.umd.edu (Dana S Emery)
  1184. Subject: Re: apple.com (duh)
  1185. Message-ID: <Mailstrom.B54.20203.-3114.de19@umail.umd.edu>
  1186. In-Reply-To: Your message <9208062143.AA15614@gaea.lpl.arizona.edu> of Thu, 6
  1187.  Aug 92 14:43:24 MST
  1188. Content-Type: TEXT/plain; charset=US-ASCII
  1189. Newsgroups: fa.think-c
  1190. Lines: 17
  1191. Date: 7 Aug 92 01:49:08 GMT
  1192.  
  1193. oops,
  1194.  
  1195. it has been pointed out to me that I mispealt 'anonymous' in my previous
  1196. diatribe, for which I must appologize, that was a most egregious error.
  1197.  
  1198. I suppoose I could blame the lack of a spelling checker in Mailstrom, but then I
  1199. would probably end up with the task of implementing it, so I wont (hope adam
  1200. isnt reading this :-).
  1201.  
  1202. Luckily, my proclivity to mistype that word doesnt usually block my access to
  1203. stuff, because the Mac program I use for ftp work (HyperFTP) has spoiled me by
  1204. provideing it as a default, thus saveing me the trouble of mistyping it.
  1205.  
  1206. GUI GUI gumdrops.
  1207.  
  1208. Dana S Emery <de19@umail.umd.edu>
  1209.  
  1210. 
  1211. 
  1212. Path: ucivax!gateway
  1213. From: SCHENKL@vax.cs.hscsyr.edu
  1214. Subject: Graf3D Library.
  1215. Message-ID: <920807105615.20201a6f@vax.cs.hscsyr.edu>
  1216. Newsgroups: fa.think-c
  1217. Lines: 6
  1218. Date: 7 Aug 92 14:58:45 GMT
  1219. X-Vmsmail-To: SMTP%"think-c@ics.uci.edu"
  1220.  
  1221. I have noticed the "Graf3D" library included with Think C, but I can not
  1222. find any documentation about it.  Where could I find something about it,
  1223. and some sample code perhaps?
  1224.  
  1225. Thanks...
  1226. Will
  1227. 
  1228. 
  1229. Path: ucivax!gateway
  1230. From: chuck@ksr.com
  1231. Subject: Cool Black Menu (tm) - now I know
  1232. Message-ID: <9208080141.AA04193@z8.ksr.com>
  1233. Newsgroups: fa.think-c
  1234. Lines: 23
  1235. Date: 8 Aug 92 01:40:46 GMT
  1236.  
  1237.  
  1238. You may recall the Cool Black Menu (tm) question I posted two weeks ago.  I
  1239. found what the problem was.
  1240.  
  1241. Some time ago I have defined some menu entries as having colors (ResEdit
  1242. automatically created a corresponding 'mctb' resource).  Then at a later
  1243. time I have redefined some menu entries, and removed the color from some
  1244. entries that had it before.  However, I did not delete the corresponding
  1245. 'mctb' resources that were created by ResEdit.
  1246.  
  1247. I do not fully understand why that caused my problem, and whether this is a
  1248. QuickDraw or TCL's CBartender issue.  But ever since I removed the extra
  1249. 'mctb' resources, CBM is gone.
  1250.  
  1251. Thanks to all the kind netters who answered my original post.  None had
  1252. guessed whodonit, but a few people found this feature cool indeed and
  1253. wanted to know how to do it.  I could not tell you how to do it in a
  1254. controlled way, but you have enough info to get started.  Tell the rest of
  1255. us if you find anything interesting.
  1256.  
  1257.  
  1258. Chuck Shavit
  1259. chuck@ksr.com
  1260. 
  1261. 
  1262. Path: ucivax!gateway
  1263. From: SCHENKL@vax.cs.hscsyr.edu
  1264. Subject: RE: INITs, cdevs, patches
  1265. Message-ID: <920806074717.20200731@vax.cs.hscsyr.edu>
  1266. Newsgroups: fa.think-c
  1267. Lines: 21
  1268. Date: 8 Aug 92 16:00:53 GMT
  1269. X-Vmsmail-To: SMTP%"fa.think-c-outbound-request@ics.uci.edu"
  1270.  
  1271. This works with tool traps:
  1272. oldTrapAdd = NGetTrapAddress(Trap,ToolTrap);
  1273. NSetTrapAddress((ProcPtr),Trap,ToolTrap);
  1274.  
  1275. You call the "oldTrapAdd" varible in your (ProcPtr) to call
  1276. the orignal. Like :
  1277. CallPascal ( <Varibles>, oldTrapAdd );
  1278.  
  1279. There is somthing slightly different with OSTraps... the
  1280. varibles arn't passed on the stack, or something... (I do all
  1281. of my programming in C, and know no assembler.)
  1282.  
  1283. Anyone else?
  1284.  
  1285. (I also have a simple INIT w/source that every time TEIdle is
  1286. called, it "shakes" the mouse randomly around the screen.  If
  1287. you want a copy of the source...  just mail me.)
  1288.  
  1289. schenkl@vax.cs.hscsyr.edu
  1290.  
  1291. PS. No, I do not know why I wrote it.
  1292. 
  1293. 
  1294. Path: ucivax!gateway
  1295. From: caprio@u.washington.edu (Robert Olsen)
  1296. Subject: Bug in CPane::AdjustToEnclosure(...
  1297. Message-ID: <Pine.3.03.9208081142.A19289-b100000@hardy.u.washington.edu>
  1298. Content-Type: TEXT/PLAIN; charset=us-ascii
  1299. Mime-Version: 1.0
  1300. Newsgroups: fa.think-c
  1301. Lines: 28
  1302. Date: 8 Aug 92 19:26:36 GMT
  1303.  
  1304.    I think I have spotted a bug in CPane::AdjustToEnclosure(...)
  1305. Remember,  AdjustToEnclosure is called for every sub-view of a Pane when its
  1306. size is changed with ChangeSize(..)
  1307.  
  1308. The bug comes alive when you have a Pane with size FIXED in one dimension
  1309. and size ELASTIC in the other.  When its enclosure changes sizes in both
  1310. directions, the AdjustToEnclosure has to move and re-size the sub-panes.
  1311. The bug exists because ChangeSize is smart and will try to validate the
  1312. portion of the Pane that is in the old aperture and the new one.
  1313. The problem is, when we call Offset(..)  first, the region it has
  1314. invalidated will get re-validated by the next call of ChangeSize(..)
  1315. So, I propose to fix the bug, you simply change the order of the two.
  1316. This way, you still get the pretty effect of ChangeSize(..)'s validation
  1317. when there is no MOVE or Offset(..)
  1318.  
  1319.    The logic of the routine reads:
  1320.  
  1321. if (moved) {                            //moved is either horiz of vert
  1322.    if (sized) {
  1323.       Offset(hOffset,vOffset,TRUE);     //the bug... I propose changing order
  1324.       ChangeSize(&delta,TRUE);          //of Offset and ChangeSize here...
  1325.    } else {
  1326.       Offset(hOffset,vOffset,TRUE);
  1327. } else if (sized) {
  1328.    ChangeSize(&delta,TRUE);
  1329. } else ...
  1330.  
  1331.  
  1332. 
  1333. 
  1334. Path: ucivax!gateway
  1335. From: spm2d@wilbury.cs.virginia.edu
  1336. Subject: Looking for a Think C implementation of sockets
  1337. Message-ID: <9208082100.AA09657@wilbury.cs.Virginia.EDU>
  1338. Posted-Date: Sat, 8 Aug 92 17:00:49 EDT
  1339. Newsgroups: fa.think-c
  1340. Lines: 11
  1341. Date: 8 Aug 92 21:01:17 GMT
  1342.  
  1343. What I currently want to do is to send some data from an SGI
  1344. (unix machine) to a Macintosh. Both will be running applications,
  1345. and it is possible that the Mac will also want to send data
  1346. back to the SGI.
  1347.  
  1348. Is there any publically available socket implementation written
  1349. in Think C?
  1350.  
  1351. Thanks,
  1352.  
  1353. Steve
  1354. 
  1355. 
  1356. Path: ucivax!gateway
  1357. From: odell@bu-it.bu.edu (Jim O'Dell)
  1358. Subject: Looking for a Think C implementation of sockets
  1359. Message-ID: <9208090430.AA09547@buitc.bu.edu>
  1360. In-Reply-To: spm2d@wilbury.cs.virginia.edu's message of 8 Aug 92 21:01:17 GMT <9208082100.AA09657@wilbury.cs.Virginia.EDU>
  1361. Newsgroups: fa.think-c
  1362. Lines: 13
  1363. Date: 9 Aug 92 05:25:16 GMT
  1364.  
  1365.  
  1366. What I currently want to do is to send some data from an SGI
  1367. (unix machine) to a Macintosh. Both will be running applications,
  1368. and it is possible that the Mac will also want to send data
  1369. back to the SGI.
  1370.  
  1371. Is there any publically available socket implementation written
  1372. in Think C?
  1373. -----
  1374.  
  1375. I'd be interested in any positive answers that you get.
  1376.  
  1377. Jim
  1378. 
  1379. 
  1380. Path: ucivax!gateway
  1381. From: SCHENKL@vax.cs.hscsyr.edu
  1382. Subject: Sockets
  1383. Message-ID: <920809211135.20204144@vax.cs.hscsyr.edu>
  1384. Newsgroups: fa.think-c
  1385. Lines: 10
  1386. Date: 10 Aug 92 01:14:05 GMT
  1387. X-Vmsmail-To: SMTP%"think-c@ics.uci.edu"
  1388.  
  1389.  
  1390.  
  1391. A think-C sockets library w/ source has been put up in the incoming directory
  1392. at "ics.uci.edu".  It seems to be the only copy left in the world, so please
  1393. take a copy if you need/want it.
  1394.  
  1395. (I'm not sure what the standard protocal for sending files to the list, but
  1396. some one requested this and I'm using this site as a drop-box.  Someone please
  1397. mail me to tell me the correct proceedure.)
  1398.  
  1399. 
  1400. 
  1401. Path: ucivax!gateway
  1402. From: SCHENKL@vax.cs.hscsyr.edu
  1403. Subject: Cursor Shake
  1404. Message-ID: <920810100735.20203a7e@vax.cs.hscsyr.edu>
  1405. Newsgroups: fa.think-c
  1406. Lines: 6
  1407. Date: 10 Aug 92 14:10:11 GMT
  1408. X-Vmsmail-To: SMTP%"think-c@ics.uci.edu"
  1409.  
  1410.  
  1411.     My silly INIT that randomaly moves the cursor around when TEIdle is
  1412. called is now also in the imcoming directory.  The code is awfull, and I
  1413. don't know it if will work under System 7, but it did under system 6.
  1414.  
  1415.     It's all yours.
  1416. 
  1417. 
  1418. Path: ucivax!gateway
  1419. From: inei@dcs.gla.ac.uk (inei)
  1420. Subject: Console-like interface needed.
  1421. Message-ID: <9208101419.AA04000@hawaii.dcs.gla.ac.uk>
  1422. Newsgroups: fa.think-c
  1423. Lines: 13
  1424. Date: 10 Aug 92 14:19:03 GMT
  1425.  
  1426.  
  1427. I need a console-like (cshow) like interface for a program but with
  1428. the ability to install my own menus and use command-keys.
  1429.  
  1430. At the mement, when I use fopenc() and cshow(), I cannot use command
  1431. keys.  I would also like to be able to resize and zoom the window.
  1432. Does anyone know if it can be done or has someone already done
  1433. something similar?
  1434.  
  1435. Mail:  Nick Nei, Computing Science Dept.,
  1436.        Glasgow Univ., 17 Lilybank Gardens,
  1437.        Glasgow G12 8QQ, UK.  Tel: (041) 339 8855 x 5457
  1438. ARPA:  inei%uk.ac.glasgow.dcs@nsfnet-relay.ac.uk USENET: inei@cs.glasgow.uucp
  1439. 
  1440. 
  1441. Path: ucivax!gateway
  1442. From: SCHENKL@vax.cs.hscsyr.edu
  1443. Subject: Sources
  1444. Message-ID: <920811081725.20203d21@vax.cs.hscsyr.edu>
  1445. Newsgroups: fa.think-c
  1446. Lines: 10
  1447. Date: 11 Aug 92 12:20:09 GMT
  1448. X-Vmsmail-To: SMTP%"think-c@ics.uci.edu"
  1449.  
  1450.  
  1451. The name for sockets, for think c is :
  1452. /incoming/sockets-thinkc.hqx
  1453.  
  1454. The name for the silly init is :
  1455. /incoming/cursor-shake.hqx
  1456.  
  1457.     Before I was able to do a directory listing, and I'm not sure why.
  1458.  
  1459. Good luck.
  1460. 
  1461. 
  1462. Path: ucivax!gateway
  1463. From: nagel@ics.uci.edu (Mark Nagel)
  1464. Subject: ARCHIVE: sockets and cursor-shake
  1465. Message-ID: <8857.713552918@ics.uci.edu>
  1466. Newsgroups: fa.think-c
  1467. Reply-To: think-c-request@ics.uci.edu
  1468. Lines: 34
  1469. Date: 11 Aug 92 17:08:46 GMT
  1470.  
  1471. I moved the files SCHENKL@vax.cs.hscsyr.edu uploaded into the main
  1472. archive area.  Here's his descriptions once again.  Please reply
  1473. to the contributor if you have any questions about the contents of
  1474. these files.
  1475.  
  1476. /*****************************************************************************/
  1477.  
  1478. From: SCHENKL@vax.cs.hscsyr.edu
  1479. Date: 10 Aug 92 14:10:11 GMT
  1480. Subject: Cursor Shake
  1481.  
  1482.         My silly INIT that randomaly moves the cursor around when TEIdle is
  1483. called is now also in the imcoming directory.  The code is awfull, and I
  1484. don't know it if will work under System 7, but it did under system 6.
  1485.  
  1486.         It's all yours.
  1487.  
  1488. [saved as: /mac/think-c/appl/cursor-shake.hqx; 7K]
  1489.  
  1490. /*****************************************************************************/
  1491.  
  1492. From: SCHENKL@vax.cs.hscsyr.edu
  1493. Date: 10 Aug 92 01:14:05 GMT
  1494. Subject: Sockets
  1495.  
  1496. A think-C sockets library w/ source has been put up in the incoming directory
  1497. at "ics.uci.edu".  It seems to be the only copy left in the world, so please
  1498. take a copy if you need/want it.
  1499.  
  1500. (I'm not sure what the standard protocal for sending files to the list, but
  1501. some one requested this and I'm using this site as a drop-box.  Someone please
  1502. mail me to tell me the correct proceedure.)
  1503.  
  1504. [saved as: /mac/think-c/appl/sockets-thinkc.hqx; 168K]
  1505. 
  1506. 
  1507. Path: ucivax!gateway
  1508. From: mdl@bintec.bintec.de (Mike Lyons)
  1509. Subject: Weird problems with THINK C 5.0.2
  1510. Message-ID: <9208111942.AA07957@bintec.bintec.de>
  1511. X-Mailer: ELM [version 2.2 PL11]
  1512. Newsgroups: fa.think-c
  1513. Lines: 72
  1514. Date: 11 Aug 92 19:10:27 GMT
  1515.  
  1516. Watch out, major use of bandwidth approaching...
  1517.  
  1518. Is THINK C 5.0.2 broken??
  1519.  
  1520. Below is an excerpt from a MacEnvy report for my machine:
  1521.  
  1522. Machine:          Macintosh IIci
  1523.  
  1524. System:           Version 7.0  (2808K)
  1525. Finder:           Version 7.0
  1526. MultiFinder:      File is not present.
  1527. Localized For:    U.S./Canada (0)
  1528. File System:      HFS (Hierarchical)
  1529. Debugger:         Macsbug installed
  1530. RAM Cache:        512K, cache enabled
  1531. Current App:      "Finder"
  1532.  
  1533. Monitors:         1 screen device
  1534. Main Screen:      640 x 480 pixels
  1535.  Pixel Depth:     8 bits/pixel (color)
  1536.  
  1537. PRAM Status:      Last write valid ($A8)
  1538. Modem Port:       9600 baud, D=8, S=2, N
  1539. Printer Port:     9600 baud, D=8, S=2, N y
  1540.  
  1541. I've also applied the System 7 Tuneup. I have 16 MB RAM,
  1542. but 32-bit addressing is off.
  1543.  
  1544. THINK C exhibits the following weirdness:
  1545.  
  1546. 1. #pragma once appears to be fully broken, i.e. files are included twice
  1547.    even though the #pragma is used, I had to resort to the
  1548.    #ifndef _HEADER_H_ ... method.
  1549.  
  1550. 2. According to the manual, option-click on the title bar of a source window
  1551.    brings up a pop-up list of all files #included in that source file. Not!
  1552.  
  1553. 2a. The same thing happens when I option-click on the title bar of the project
  1554.     window (nix).
  1555.  
  1556. 3.  option-double click on an identifier name is supposed to beam down to
  1557.     the place where that identifier is defined.  Usually all that happens
  1558.     is that the watch cursor flickers, and then nothing else happens.  Is
  1559.     this function unable to find definitions across multiple files? sigh.
  1560.  
  1561. 4.  I was attempting to port the sample code in the Apple MIDI Management
  1562.     Tools 2.01 from MPW to THINK C.  THINK C always complains (illegal cast)
  1563.     when constructions like:
  1564.  
  1565.                (Str255) CtoPStr (etc...);
  1566.  
  1567.      show up.  Does this typedef
  1568.  
  1569.                          typedef unsigned char Str255[256]
  1570.  
  1571.       in Types.h have something to do with the problem?? :-(
  1572.  
  1573. 5.  This isn't a bug, but rather a complaint.  Shouldn't multi-file searches
  1574.      automagically sift through #included files as well (and bring them up in
  1575.      the search checklist dialog at the beginning)?  Would save a lot of time.
  1576.  
  1577. Mike
  1578. --
  1579. ================================================================================
  1580. | Michael D. Lyons        | Telefon: +49 911 996750  | EMail: mdl@BinTec.DE    |
  1581. | BinTec Computersysteme  | Telefax: +49 911 6880725 |                         |
  1582. | Willstaetter Strasse 30 |                          |                         |
  1583. | D-8500 Nuernberg 60     |                          |                         |
  1584. | GERMANY                 |                          |                         |
  1585. ================================================================================
  1586. |                 BinTec --- UNIX Kommunikation ueber ISDN                     |
  1587. ================================================================================
  1588. 
  1589. 
  1590. Path: ucivax!gateway
  1591. From: SCHENKL@vax.cs.hscsyr.edu
  1592. Subject: CTB Tools...
  1593. Message-ID: <920811155356.20205cce@vax.cs.hscsyr.edu>
  1594. Newsgroups: fa.think-c
  1595. Lines: 2
  1596. Date: 11 Aug 92 19:56:31 GMT
  1597. X-Vmsmail-To: SMTP%"think-c@ics.uci.edu"
  1598.  
  1599. Does anyone know where I can find some Comm. Toolbox tools and/or source to
  1600. them?
  1601. 
  1602. 
  1603. Path: ucivax!gateway
  1604. From: jdm@boulder.colorado.edu (James Meiss)
  1605. Subject: Please explain this trivial crash
  1606. Message-ID: <9208112137.AA10646@poincare.Colorado.EDU>
  1607. Newsgroups: fa.think-c
  1608. Lines: 51
  1609. Date: 11 Aug 92 21:33:49 GMT
  1610.  
  1611.  
  1612.  
  1613.         Can someone explain to me why this simple code crashes with a bus
  1614. error under Think C 5.0.2?
  1615.  
  1616. ******
  1617. #include <stdio.h>
  1618.  
  1619. #define ORDER 4
  1620.  
  1621. void MatrixCopy(double a[ORDER][ORDER], double b[ORDER][ORDER])        /*Replaces
  1622. a by b */
  1623. {
  1624.     register int i,j;
  1625.  
  1626.     for(i=0;i<ORDER;i++)
  1627.         for(j=0;j<ORDER; a[i][j] = b[i][j++]);
  1628.  
  1629. /****
  1630. If you replace the above with
  1631.      for(j=0;j<ORDER;j++)
  1632.          a[i][j] = b[i][j++];
  1633. then all is well
  1634. ****/
  1635. }
  1636.  
  1637. main()
  1638. {
  1639.  
  1640.     double T[ORDER][ORDER], U[ORDER][ORDER];
  1641.     double a[ORDER],b[ORDER];
  1642.     int i,j;
  1643.  
  1644.     for(i=0;i<ORDER;i++)
  1645.         for(j=0;j<ORDER;j++)
  1646.         {
  1647.             T[i][j] = 1.0;
  1648.             U[i][j] = 0.2;
  1649.         }
  1650.  
  1651.     MatrixCopy(T,U);
  1652.     printf("Done\n");
  1653. }
  1654.  
  1655.     James D. Meiss
  1656.     Program in Applied Mathematics                   (303)492-4672 office
  1657.     University of Colorado, Boulder 80309-0526            -4668 secretary
  1658.                                                                               -4066 FAX
  1659.     jdm@boulder.colorado.edu
  1660.  
  1661.  
  1662. 
  1663. 
  1664. Path: ucivax!gateway
  1665. From: k044477@hobbes.kzoo.edu ("Jamie R. McCarthy")
  1666. Subject: Re: Weird problems with THINK C 5.0.2
  1667. Message-ID: <9208112146.AA08249@hobbes.kzoo.edu>
  1668. In-Reply-To: <9208111942.AA07957@bintec.bintec.de>; from "Mike Lyons" at Aug 11, 92 7:10 pm
  1669. X-Mailer: ELM [version 2.3 PL11]
  1670. Newsgroups: fa.think-c
  1671. Lines: 51
  1672. Date: 11 Aug 92 21:44:37 GMT
  1673.  
  1674. > THINK C exhibits the following weirdness:
  1675. >
  1676. > 1. #pragma once appears to be fully broken, i.e. files are included twice
  1677. >    even though the #pragma is used, I had to resort to the
  1678. >    #ifndef _HEADER_H_ ... method.
  1679.  
  1680. You are using "#pragma once" right?
  1681.  
  1682. > 2. According to the manual, option-click on the title bar of a source window
  1683. >    brings up a pop-up list of all files #included in that source file. Not!
  1684.  
  1685. It won't, if you haven't compiled the file successfully yet, or if all
  1686. the #included files are also in a precompiled header.
  1687.  
  1688. > 2a. The same thing happens when I option-click on the title bar of the project
  1689. >     window (nix).
  1690.  
  1691. Dunno...
  1692.  
  1693. > 3.  option-double click on an identifier name is supposed to beam down to
  1694. >     the place where that identifier is defined.  Usually all that happens
  1695. >     is that the watch cursor flickers, and then nothing else happens.  Is
  1696. >     this function unable to find definitions across multiple files? sigh.
  1697.  
  1698. Actually, all it does is try to find the first occurence of the
  1699. selection, just a regular find.  I believe it searches all the .h files
  1700. that an option-click will reveal--i.e., all headers that aren't also
  1701. precompiled.
  1702.  
  1703. > 4.  I was attempting to port the sample code in the Apple MIDI Management
  1704. >     Tools 2.01 from MPW to THINK C.  THINK C always complains (illegal cast)
  1705. >     when constructions like:
  1706. >                (Str255) CtoPStr (etc...);
  1707. >      show up.  Does this typedef
  1708. >                          typedef unsigned char Str255[256]
  1709. >       in Types.h have something to do with the problem?? :-(
  1710.  
  1711. Yup.  Just write "(unsigned char *) CtoPStr(...)" instead.  You can cast
  1712. to a pointer but not to an array.
  1713.  
  1714. > 5.  This isn't a bug, but rather a complaint.  Shouldn't multi-file searches
  1715. >      automagically sift through #included files as well (and bring them up in
  1716. >      the search checklist dialog at the beginning)?  Would save a lot of time.
  1717.  
  1718. Quick way to do this:  put "Mac #includes.c" or whatever your precompiled
  1719. header's source file is into your project.  It'll add zero bytes of
  1720. object code, but you're guaranteed that clicking "Check all .h" in the
  1721. Multi-File Search dialog will really select _all_ .h files.
  1722. --
  1723.  Jamie McCarthy      Internet: k044477@kzoo.edu      AppleLink: j.mccarthy
  1724.  Sure, I subscribe to alt.sex, but I only read it for the articles...
  1725. 
  1726. 
  1727. Path: ucivax!gateway
  1728. From: nagel@cigna.uucp ("Mark D. Nagel")
  1729. Subject: ARCHIVE: oops
  1730. Message-ID: <7234.713577735@cigna.com>
  1731. Newsgroups: fa.think-c
  1732. Reply-To: nagel@cigna.uucp
  1733. Organization: CIGNA FIRST, Irvine, CA
  1734. Lines: 6
  1735. Date: 12 Aug 92 00:10:39 GMT
  1736. Phone: (714) 727-4242
  1737.  
  1738. I accidentally said that the sockets code is in the appl
  1739. subdirectory in the archives; it is in actuality located within the
  1740. code subdirectory; i.e., /mac/think-c/code/sockets-thinkc.hqx.
  1741. Sorry 'bout that!
  1742.  
  1743. Mark
  1744. 
  1745. 
  1746. Path: ucivax!gateway
  1747. From: vthrc@mailbox.uq.oz.au (Danny Thomas)
  1748. Subject: Re: Please explain this trivial crash
  1749. Message-ID: <9208111832.aa25859@q2.ics.uci.edu>
  1750. Newsgroups: fa.think-c
  1751. Lines: 56
  1752. Date: 12 Aug 92 01:32:59 GMT
  1753.  
  1754. >        Can someone explain to me why this simple code crashes with a bus
  1755. >error under Think C 5.0.2?
  1756. >
  1757. >******
  1758. >#include <stdio.h>
  1759. >
  1760. >#define ORDER 4
  1761. >
  1762. >void MatrixCopy(double a[ORDER][ORDER], double b[ORDER][ORDER])        /*Replaces
  1763. >a by b */
  1764. >{
  1765. >    register int i,j;
  1766. >
  1767. >    for(i=0;i<ORDER;i++)
  1768. >        for(j=0;j<ORDER; a[i][j] = b[i][j++]);
  1769. >
  1770. >/****
  1771. >If you replace the above with
  1772. >     for(j=0;j<ORDER;j++)
  1773. >         a[i][j] = b[i][j++];
  1774. >then all is well
  1775. >****/
  1776.  
  1777. >         a[i][j] = b[i][j++];
  1778.                           ^^
  1779. sure that is in the code that works, j is being incremented in for() as
  1780. well
  1781.  
  1782. I am suspicious of statements like these:
  1783. >> a[i][j] = b[i][j++]
  1784. is the j on the LHS the original value or post-incremented by the RHS?
  1785. I had a *brief* look at Harbison & Steel 3rd edition but couldn't find an
  1786. answer staring at me. In C an '=' is an binary expression operator and does
  1787. does not act as a sequence point. To quote H&S p207:
  1788. "In general, the compiler can rearrange the order in which an expression is
  1789. evaluated. The rearrangement may consist of evaluating only the arguments
  1790. of a function call, or the two operands of a BINARY OPERATOR (my emphasis),
  1791. in some particular order other than the obvious left-to-right order. ..."
  1792.  
  1793. To me, that implies the array indexing on the LHS could be done before or
  1794. after the RHS expression is evaluated. I'm open to correction on this
  1795. point, but if you are writing mathematical software, particularly when
  1796. roundoff, overflow, imprecision and other artifacts of floating-point
  1797. representations are important, you'd better get a good understanding of C's
  1798. evaluation order. Although expression rearrangement does allow for better
  1799. compiler optimizations, apparently it does cause problems with mathematical
  1800. software in particular. I seem to remember there are (ANSI?) working groups
  1801. on exploring ways to make C better for mathematical software.
  1802.  
  1803. PS if my guess was correct, you code could have been validly translated by
  1804. any C compiler so the last pass thru loop had a[] indexed out of bounds.
  1805. Whether THINK did this and why it caused an address error is, as textbooks
  1806. say, an exercise for the reader.
  1807.  
  1808. cheers,
  1809.  
  1810. 
  1811. 
  1812. Path: ucivax!gateway
  1813. From: askwersk@athena.mit.edu
  1814. Subject: Weird Debugger activity...
  1815. Message-ID: <9208120653.AA14652@e40-008-5.MIT.EDU>
  1816. Newsgroups: fa.think-c
  1817. Lines: 42
  1818. Date: 12 Aug 92 06:53:25 GMT
  1819.  
  1820.  
  1821. Forgive me those who are receiving this message twice to their simultaneous
  1822. subscriptions to the Think-C/TCL mailing groups.
  1823.  
  1824. I'm running a Mac SE/30 with 8 megs ram and think c 5.0.2 and latest TCL
  1825. version.
  1826.  
  1827. I'm using starter.pi project as a framework for my own application that will
  1828. work over the modem. However I am having problems debugging the code. It
  1829. seems the Debugger is adversely affecting my debugging efforts!
  1830.  
  1831. For example, when I try to run the program without the debugger it works
  1832. fine (except for the modem part which I am trying to debug). When I run
  1833. the debugger and "Go", somehow my Apps itsSwitchboard gets swiped from
  1834. under me. I tried a SS (Step Spy) in MacsBug on the address of the Handle
  1835. dereferencing itsSwitchboard, and then my Debugger started executing code
  1836. that wasnt supposed to be executed. In addition to that the Switchboard
  1837. didnt get swiped out from under me! (Does murphy's law reign in programming
  1838. or what?)
  1839.  
  1840. Some backround on my code: I've overridden the dokeydown method in my
  1841. subclass of Ctextedit, in order to send the key to the modem, but I
  1842. also call the inherited method as well.
  1843.  
  1844. When I comment out the code in the new method that handles sending the
  1845. key to the  modem, the code works fine then.
  1846.  
  1847. I have some Memory Manger calls in that method. I've been thinking that
  1848. the problem is simply that the memory manager is purging my Switchboard
  1849. so I did a HNoPurge in my IApp method but the problem persists.
  1850. I also thought I might be corrupting my heap but that doesnt explain
  1851. why the Switchboard is the only (and always the) one being NULLed.
  1852.  
  1853. And what does the dang Debugger have to do with it?
  1854.  
  1855. Should I have a 'backup' switchboard in case this happens?
  1856.  
  1857. Also, I have set the debugger to have a 500k partition and the project
  1858. to have a 512k partition. How could I run out of memory so fast?
  1859.  
  1860. Adam Skwersky
  1861. askwersk@athena.mit.edu
  1862. 
  1863. 
  1864. Path: ucivax!gateway
  1865. From: MANUTTER@grove.iup.edu ("Mark Nutter, Apple Support")
  1866. Subject: Re: Please explain this trivial crash
  1867. Message-ID: <01GNHJYJWN7K91VRFU@grove.iup.edu>
  1868. Newsgroups: fa.think-c
  1869. X-VMS-To: NETMAIL%"think-c@ics.uci.edu"
  1870. Lines: 64
  1871. Date: 12 Aug 92 12:14:16 GMT
  1872. X-Envelope-to: think-c@ics.uci.edu
  1873. X-Organization: Indiana University of Pennsylvania
  1874.  
  1875. >From:    NetMail%"vthrc@mailbox.uq.oz.au"  "Danny Thomas" 11-AUG-1992 22:15:22.90
  1876. >To:    NetMail%"think-c@ics.uci.edu"
  1877. >CC:
  1878. >Subj:    RE: Please explain this trivial crash
  1879. >
  1880. >Return-path: <fa.think-c-outbound-request@ics.uci.edu>
  1881. >Received: from ics.uci.edu by grove.iup.edu (PMDF #12462) id
  1882. > <01GNGYZ9TDR495MSJ2@grove.iup.edu>; Tue, 11 Aug 1992 22:15 EST
  1883. >Received: from ics.uci.edu by q2.ics.uci.edu id aa25907; 11 Aug 92 18:35 PDT
  1884. >Received: from USENET by q2.ics.uci.edu id aa25892; 11 Aug 92 18:33 PDT
  1885. >Date: 12 Aug 92 01:32:59 GMT
  1886. >From: Danny Thomas <vthrc@mailbox.uq.oz.au>
  1887. >Subject: RE: Please explain this trivial crash
  1888. >To: think-c@ics.uci.edu
  1889. >Message-id: <9208111832.aa25859@q2.ics.uci.edu>
  1890. >Newsgroups: fa.think-c
  1891. >
  1892. >>        Can someone explain to me why this simple code crashes with a bus
  1893. >>error under Think C 5.0.2?
  1894. >>
  1895. >>******
  1896. >>#include <stdio.h>
  1897. >>
  1898. >>#define ORDER 4
  1899. >>
  1900. >>void MatrixCopy(double a[ORDER][ORDER], double b[ORDER][ORDER])        /*Replaces
  1901. >>a by b */
  1902. >>{
  1903. >>    register int i,j;
  1904. >>
  1905. >>    for(i=0;i<ORDER;i++)
  1906. >>        for(j=0;j<ORDER; a[i][j] = b[i][j++]);
  1907. >>
  1908. >>/****
  1909. >>If you replace the above with
  1910. >>     for(j=0;j<ORDER;j++)
  1911. >>         a[i][j] = b[i][j++];
  1912. >>then all is well
  1913. >>****/
  1914.  
  1915. [stuff deleted]
  1916.  
  1917. >PS if my guess was correct, you code could have been validly translated by
  1918. >any C compiler so the last pass thru loop had a[] indexed out of bounds.
  1919. >Whether THINK did this and why it caused an address error is, as textbooks
  1920. >say, an exercise for the reader.
  1921. >
  1922. >cheers,
  1923. >
  1924.  
  1925. This is my guess, too:  Think C is evaluating the right hand side before the
  1926. left hand side.  Why not use the Assembler command to take a look at what code
  1927. the compiler is actually generating.  Even if you're not an assembly whiz, you
  1928. should be able to figure out whether the j++ is taking place before or after
  1929. the assignment.
  1930.  
  1931. -----------------------------------------------------------------------------
  1932. Mark Nutter                                  Internet: manutter@grove.iup.edu
  1933. Apple Support Manager                          BITNET: MANUTTER@IUP
  1934. Indiana University of Pennsylvania
  1935. G-4 Stright Hall, IUP
  1936. Indiana, PA 15705
  1937. "My horoscope says today is a bad day to be superstitious."
  1938. =============================================================================
  1939. 
  1940. 
  1941. Path: ucivax!gateway
  1942. From: phils@chaos.cs.brandeis.edu (Phil Shapiro)
  1943. Subject: Weird problems with THINK C 5.0.2
  1944. Message-ID: <9208121352.AA02695@chaos.cs.brandeis.edu>
  1945. In-Reply-To: Mike Lyons's message of 11 Aug 92 19:10:27 GMT <9208111942.AA07957@bintec.bintec.de>
  1946. Newsgroups: fa.think-c
  1947. Lines: 29
  1948. Date: 12 Aug 92 13:53:39 GMT
  1949.  
  1950. In order for the #include popup and multi-file search through header
  1951. files to work, you must have already sucessfully compiled a source
  1952. file that #includes header files. For any source file, the list of
  1953. header files is constructed at the end of any successful compile.
  1954.  
  1955. In a similar fashion, the option-double click on identifiers will only
  1956. work if you've sucessfully linked your project, since THINK C uses the
  1957. link table to figure out which source file contains a given
  1958. identifier.
  1959.  
  1960. When you use #pragma once, make sure that you always use the same
  1961. capitalization when you #include a header file. Even though the Mac
  1962. file system is not case sensitive (for now, at least), THINK C
  1963. considers <stdio.h> and <StdIO.h> to be two different files.
  1964.  
  1965. >   (Str255) CtoPStr (etc...);
  1966.  
  1967. This cast is illegal because you can't cast to an array type. Instead
  1968. try:
  1969.  
  1970.     (StringPtr) CtoPStr( /* etc */ );
  1971.  
  1972. StringPtr is the "official" name for a pointer to a Str255.
  1973.  
  1974.     -phil
  1975. ----
  1976.    Phil Shapiro                                   Software Engineer
  1977.    Language Products Group                     Symantec Corporation
  1978.            Internet: phils@cs.brandeis.edu
  1979. 
  1980. 
  1981. Path: ucivax!gateway
  1982. From: bobm@imagine.convex.com (Bob Miller)
  1983. Subject: Re: Smooth Animation & GNE/WNE - Is it possible?
  1984. Message-ID: <9208121606.AA16261@imagine.convex.com>
  1985. In-Reply-To: Your message of "01 Aug 92 16:44:39 GMT."
  1986.              <9208011646.AA02171@hobbes.kzoo.edu>
  1987. Newsgroups: fa.think-c
  1988. X-Quote-Of-The: If lawyers had been present on Mount Sinai, the Ten
  1989.                 Commandments would have twelve hundred amendments, all summing
  1990.                 to the conclusion: The rich may ignore these rules, the poor
  1991.                 will be hanged if they violate the smallest subordinate
  1992.                 clause.                 -- Sigismundo Celine
  1993. Lines: 16
  1994. Date: 12 Aug 92 16:07:36 GMT
  1995.  
  1996. > Well, there's no easy way around it.  If you need ten minutes of solidly
  1997. > smooth animation at a constant 20 fps, then you're simply not going to
  1998. > be able to call WNE.
  1999. >
  2000. > However, there can be ways around it if your requirements are a little
  2001. > less stringent.  And it's very nice to know that downloads can go on
  2002. > while playing, so giving time to background processes _is_ a goal worth
  2003. > striving for.
  2004.  
  2005. BTW, it's more important for perceived smoothness that you keep things
  2006. moving at a constant rate than that you draw every frame.  You might
  2007. call GNE as usual, but whenever you draw an update check the current
  2008. time and calculate how far the various sprites have moved.
  2009.  
  2010.                     K<bob>
  2011.  
  2012. 
  2013. 
  2014. Path: ucivax!gateway
  2015. From: askwersk@athena.mit.edu
  2016. Subject: Ptrs...
  2017. Message-ID: <9208121744.AA21129@e40-008-10.MIT.EDU>
  2018. Newsgroups: fa.think-c
  2019. Lines: 26
  2020. Date: 12 Aug 92 17:44:23 GMT
  2021.  
  2022.  
  2023.  
  2024. In Inside the Macintosh V II chapter 9 (Serial Drivers):
  2025.  
  2026. "SerSetBuf specifies a new input buffer for the input driver having the
  2027. reference number refNum. SerBPtr points tothe buffer, and serBLen specifices
  2028. the number of bytes in the buffer. To restore the drivers default buffer,
  2029. call SerSetBuf with serBLen set to 0.
  2030.  
  2031.     Warning: You must lo new input buffer while its in use."
  2032.  
  2033. I'm using an allocated handle to a buffer and locking the handle so it
  2034. doesnt move. I use the dereferenced handle as the SerBPtr. Is this the only
  2035. safe way to go about this? IE could I just use a Ptr and Ptr = NewPtr(Size)?
  2036. Are Ptrs automatically locked? I couldnt find a routine in IM to lock
  2037. Ptrs. I'm having problems with bad pointers so I wanted to make sure I wasnt
  2038. doing any unecessary and potentially dangerous.
  2039.  
  2040.  
  2041. Also...the new SerBuf, is that where the FSRead PBRead, etc read their
  2042. data from? Or are is it simply the Buffer you pass to the Read function?
  2043.  
  2044. Also, do you think its a better idea to follow the CTB or use
  2045. the older Toolbox routines?
  2046.  
  2047. Adam
  2048. 
  2049. 
  2050. Path: ucivax!gateway
  2051. From: franklin@eecs.ucdavis.edu
  2052. Subject: Re: Please explain this trivial crash
  2053. Message-ID: <9208121913.AA06353@pine.eecs.ucdavis.edu>
  2054. In-Reply-To: Your message of "11 Aug 92 21:33:49 GMT."
  2055.              <9208112137.AA10646@poincare.Colorado.EDU>
  2056. Newsgroups: fa.think-c
  2057. Reply-To: pdfranklin@ucdavis.edu
  2058. Lines: 60
  2059. X-Mts: smtp
  2060. Date: 12 Aug 92 19:13:49 GMT
  2061.  
  2062.  
  2063. Your message dated: 11 Aug 92 21:33:49 GMT
  2064.  
  2065. >        Can someone explain to me why this simple code crashes with a bus
  2066. >error under Think C 5.0.2?
  2067.  
  2068. You're not watching where your increments are occurring, I think.  The
  2069. assignment operator '=' in C is a right-to-left operator.  Therefore,
  2070. in the expression 'a[i][j] = b[i][j++]', if j is 2 when we start, i and
  2071. j++ (in b[i][j++]) are evaluated, j is incremented, b[i][2] is evaluated,
  2072. i and j are evaluated again (in a[i][j], but j is now 3) and finally, the
  2073. result from b[i][2] is assigned to a[i][3].  You get the bus error when
  2074. both i and j are ORDER.  (You may get it the first time j is ORDER; I
  2075. son't remember.)  Oh, you're not guaranteed a bus error; I'm not exactly
  2076. sure what happens.  But, you are looking at a bad memory address, so a
  2077. bus error is just one of many possibilities.  I think changing the code
  2078. to a[i][j++] = b[i][j] should fix it.  Try it.
  2079.  
  2080. In the second piece of code, you are incrementing j twice, with some very
  2081. interesting results.  You should get the same problem (but possibly not the
  2082. same error) if you add 1 to ORDER.  It has to do with whether or not ORDER
  2083. is even.
  2084.  
  2085. These problems should become evident if you examine the array a[][] in the
  2086. debugger after the call to MatrixCopy completes (or when you get the bus
  2087. error).  Unfortunately, Think C doesn't have a nice method for examining a
  2088. 2-dimensional array.
  2089.  
  2090. BTW, if you are using nearly any level of optimization (such as using
  2091. registers across instructions; I'm not sure what the option is called),
  2092. you won't get any speed improvement out of packing the assignment and
  2093. the increment into the same statement.  You might as well make it easier
  2094. to read and debug by separating them.  Use:
  2095.     for(i=0;i<ORDER;i++)
  2096.         for(j=0;j<ORDER;j++)
  2097.             a[i][j] = b[i][j];
  2098. --Paul Franklin
  2099. >
  2100. >******
  2101. >#include <stdio.h>
  2102. >
  2103. >#define ORDER 4
  2104. >
  2105. >void MatrixCopy(double a[ORDER][ORDER], double b[ORDER][ORDER])
  2106. >    /*Replaces
  2107. >a by b */
  2108. >{
  2109. >    register int i,j;
  2110. >
  2111. >    for(i=0;i<ORDER;i++)
  2112. >        for(j=0;j<ORDER; a[i][j] = b[i][j++]);
  2113. >
  2114. >/****
  2115. >If you replace the above with
  2116. >     for(j=0;j<ORDER;j++)
  2117. >         a[i][j] = b[i][j++];
  2118. >then all is well
  2119. >****/
  2120. >}
  2121. >
  2122. 
  2123. 
  2124. Path: ucivax!gateway
  2125. From: morley@guppy.rutgers.edu (darin s morley)
  2126. Subject: the assignment operator
  2127. Message-ID: <CMM-RU.1.3.713647966.morley@guppy.rutgers.edu>
  2128. Newsgroups: fa.think-c
  2129. Lines: 60
  2130. Date: 12 Aug 92 19:33:01 GMT
  2131.  
  2132. >       Can someone explain to me why this simple code crashes with a bus
  2133. >error under Think C 5.0.2?
  2134. >
  2135. >******
  2136. >#include <stdio.h>
  2137. >
  2138. >#define ORDER 4
  2139. >
  2140. >void MatrixCopy(double a[ORDER][ORDER], double b[ORDER][ORDER])        /*Replaces
  2141. >a by b */
  2142. >{
  2143. >    register int i,j;
  2144. >
  2145. >    for(i=0;i<ORDER;i++)
  2146. >        for(j=0;j<ORDER; a[i][j] = b[i][j++]);
  2147. >
  2148. >/****
  2149. >If you replace the above with
  2150. >     for(j=0;j<ORDER;j++)
  2151. >         a[i][j] = b[i][j++];
  2152. >then all is well
  2153. >****/
  2154. >}
  2155. ...
  2156.  
  2157. >I am suspicious of statements like these:
  2158. >>> a[i][j] = b[i][j++]
  2159. >is the j on the LHS the original value or post-incremented by the RHS?
  2160. ...
  2161.  
  2162. >This is my guess, too:  Think C is evaluating the right hand side before the
  2163. >left hand side. Why not use the Assembler command to take a look at what code
  2164. ...
  2165.  
  2166. This is not a guess.
  2167.  
  2168. The assignment operator (=), according to the ANSI standard, operates from right
  2169. to left. It has to, because the value on the right hand side must be known
  2170. before it can be assigned to the left. Therefore, any expressions appearring on
  2171. the right will be evaluated before the left hand side is even considered. The
  2172. algorithmic decomposition of
  2173.  
  2174.     a[i][j] = b[i][j++]
  2175.  
  2176. would go something like this:
  2177.  
  2178.     get value of b[i][j]
  2179.  
  2180.     j' = j++
  2181.  
  2182.     store value of b[i][j] in a[i][j']
  2183.  
  2184. With i and j equal to zero the actual assignment would be:
  2185.  
  2186.     a[0][1] = b[0][0]
  2187.  
  2188. Notice that in the for-loop above which uses this assignment the error occurs
  2189. when a[i][ORDER] = b[i][ORDER - 1]. a[i][ORDER] is out of range.
  2190. ---
  2191. morley@clam.rutgers.edu
  2192. 
  2193. 
  2194. Path: ucivax!gateway
  2195. From: jdm@boulder.colorado.edu (James Meiss)
  2196. Subject: Re: Please explain this trivial crash
  2197. Message-ID: <9208121937.AA12982@poincare.Colorado.EDU>
  2198. Newsgroups: fa.think-c
  2199. Lines: 36
  2200. Date: 12 Aug 92 19:33:13 GMT
  2201.  
  2202. At 12 Aug 12:14 GMT, Mark Nutter, Apple Support wrote:
  2203.  
  2204. >>
  2205. >>>        Can someone explain to me why this simple code crashes with a bus
  2206. >>>error under Think C 5.0.2?
  2207.  
  2208. >>>    for(i=0;i<ORDER;i++)
  2209. >>>        for(j=0;j<ORDER; a[i][j] = b[i][j++]);
  2210.  
  2211. ***stuff deleted****
  2212. >This is my guess, too:  Think C is evaluating the right hand side before the
  2213. >left hand side.  Why not use the Assembler command to take a look at what code
  2214. >the compiler is actually generating.  Even if you're not an assembly whiz, you
  2215. >should be able to figure out whether the j++ is taking place before or after
  2216. >the assignment.
  2217. >
  2218. >-----------------------------------------------------------------------------
  2219. >Mark Nutter                                  Internet: manutter@grove.iup.edu
  2220.  
  2221.         Thanks for all the help!. I found that in the following
  2222.  
  2223.     for(i=0;i<ORDER;v[i] = w[i++]);
  2224.  
  2225.     for(i=0;i<ORDER;v[i] = w[i],i++);
  2226.  
  2227. the first increments i before the assignment, so v[1] = w[0]. Only the
  2228. second works like one would want. Ah, the mysteries of C.
  2229.  
  2230.  
  2231.     James D. Meiss
  2232.     Program in Applied Mathematics                   (303)492-4672 office
  2233.     University of Colorado, Boulder 80309-0526            -4668 secretary
  2234.                                                                               -4066 FAX
  2235.     jdm@boulder.colorado.edu
  2236.  
  2237.  
  2238. 
  2239. 
  2240. Path: ucivax!gateway
  2241. From: castalia@gaea.lpl.arizona.edu (Bradford Castalia)
  2242. Subject: Re: Please explain this trivial crash
  2243. Message-ID: <9208122035.AA19859@gaea.lpl.arizona.edu>
  2244. Newsgroups: fa.think-c
  2245. Lines: 112
  2246. Date: 12 Aug 92 20:34:07 GMT
  2247. X-Envelope-to: think-c@ics.uci.edu
  2248.  
  2249.  
  2250. K&R (The C Programming Language, second edition) is very explicit about
  2251. the situation described. Here is a quote from pp. 53f:
  2252.  
  2253. "In any expression involving side effects, there can be subtle
  2254. dependencies on the order in which variables taking part in the
  2255. expression are updated.  One unhappy situation is typified by the
  2256. statement
  2257.  
  2258.     a[i] = i++;
  2259.  
  2260. The question is whether the subscript is the old value of i or the
  2261. new. Compilers can interpret this in differnt ways, and generate
  2262. different answers depending on their interpretation. The standard
  2263. intentionally leaves most such matters unspecified. When side effects
  2264. (assignment to variables) take place within an expression is left to
  2265. the discretion of the compiler, since the best order depends strongly
  2266. on machine architecture."
  2267.  
  2268. If you want portable and *reliable* code, avoid expressions that have
  2269. the possibility for ambiguity vis a vis order of expression
  2270. evaluation.
  2271.  
  2272. Bradford Castalia                      castalia@pirl.lpl.arizona.edu
  2273. Systems Manager                        (602) 621-6946
  2274. Planetary Image Research Laboratory    (602) 621-4824
  2275. Space Sciences Building, 429           LPL FAX: (602) 621-4933
  2276. University of Arizona
  2277. Tucson, Arizona  85721
  2278.  
  2279. ----- Begin Included Message -----
  2280.  
  2281. From fa.think-c-outbound-request@ics.uci.edu Wed Aug 12 06:13:14 1992
  2282. From: "Mark Nutter, Apple Support" <MANUTTER@grove.iup.edu>
  2283. Subject: Re: Please explain this trivial crash
  2284. Newsgroups: fa.think-c
  2285. X-Vms-To: NETMAIL%"think-c@ics.uci.edu"
  2286. Date: 12 Aug 92 12:14:16 GMT
  2287. X-Envelope-To: think-c@ics.uci.edu
  2288. X-Organization: Indiana University of Pennsylvania
  2289. To: think-c@ics.uci.edu
  2290. Content-Length: 2256
  2291. X-Lines: 64
  2292.  
  2293. >From:    NetMail%"vthrc@mailbox.uq.oz.au"  "Danny Thomas" 11-AUG-1992 22:15:22.90
  2294. >To:    NetMail%"think-c@ics.uci.edu"
  2295. >CC:
  2296. >Subj:    RE: Please explain this trivial crash
  2297. >
  2298. >Return-path: <fa.think-c-outbound-request@ics.uci.edu>
  2299. >Received: from ics.uci.edu by grove.iup.edu (PMDF #12462) id
  2300. > <01GNGYZ9TDR495MSJ2@grove.iup.edu>; Tue, 11 Aug 1992 22:15 EST
  2301. >Received: from ics.uci.edu by q2.ics.uci.edu id aa25907; 11 Aug 92 18:35 PDT
  2302. >Received: from USENET by q2.ics.uci.edu id aa25892; 11 Aug 92 18:33 PDT
  2303. >Date: 12 Aug 92 01:32:59 GMT
  2304. >From: Danny Thomas <vthrc@mailbox.uq.oz.au>
  2305. >Subject: RE: Please explain this trivial crash
  2306. >To: think-c@ics.uci.edu
  2307. >Message-id: <9208111832.aa25859@q2.ics.uci.edu>
  2308. >Newsgroups: fa.think-c
  2309. >
  2310. >>        Can someone explain to me why this simple code crashes with a bus
  2311. >>error under Think C 5.0.2?
  2312. >>
  2313. >>******
  2314. >>#include <stdio.h>
  2315. >>
  2316. >>#define ORDER 4
  2317. >>
  2318. >>void MatrixCopy(double a[ORDER][ORDER], double b[ORDER][ORDER])        /*Replaces
  2319. >>a by b */
  2320. >>{
  2321. >>    register int i,j;
  2322. >>
  2323. >>    for(i=0;i<ORDER;i++)
  2324. >>        for(j=0;j<ORDER; a[i][j] = b[i][j++]);
  2325. >>
  2326. >>/****
  2327. >>If you replace the above with
  2328. >>     for(j=0;j<ORDER;j++)
  2329. >>         a[i][j] = b[i][j++];
  2330. >>then all is well
  2331. >>****/
  2332.  
  2333. [stuff deleted]
  2334.  
  2335. >PS if my guess was correct, you code could have been validly translated by
  2336. >any C compiler so the last pass thru loop had a[] indexed out of bounds.
  2337. >Whether THINK did this and why it caused an address error is, as textbooks
  2338. >say, an exercise for the reader.
  2339. >
  2340. >cheers,
  2341. >
  2342.  
  2343. This is my guess, too:  Think C is evaluating the right hand side before the
  2344. left hand side.  Why not use the Assembler command to take a look at what code
  2345. the compiler is actually generating.  Even if you're not an assembly whiz, you
  2346. should be able to figure out whether the j++ is taking place before or after
  2347. the assignment.
  2348.  
  2349. -----------------------------------------------------------------------------
  2350. Mark Nutter                                  Internet: manutter@grove.iup.edu
  2351. Apple Support Manager                          BITNET: MANUTTER@IUP
  2352. Indiana University of Pennsylvania
  2353. G-4 Stright Hall, IUP
  2354. Indiana, PA 15705
  2355. "My horoscope says today is a bad day to be superstitious."
  2356. =============================================================================
  2357.  
  2358.  
  2359. ----- End Included Message -----
  2360.  
  2361. 
  2362. 
  2363. Path: ucivax!gateway
  2364. From: bobm@imagine.convex.com (Bob Miller)
  2365. Subject: Re: Please explain this trivial crash
  2366. Message-ID: <9208122056.AA28234@imagine.convex.com>
  2367. In-Reply-To: Your message of "12 Aug 92 01:32:59 GMT."
  2368.              <9208111832.aa25859@q2.ics.uci.edu>
  2369. Newsgroups: fa.think-c
  2370. X-Quote-Of-The: Open God read/write, to tell him my prayers.
  2371.                 With synchronous I/O, He eases my cares.
  2372.                 He buffers my troubles, and flushes His love.
  2373.                 He's the OS of truth, the kernel above.
  2374. Lines: 13
  2375. Date: 12 Aug 92 20:57:18 GMT
  2376.  
  2377. > PS if my guess was correct, you code could have been validly translated by
  2378. > any C compiler so the last pass thru loop had a[] indexed out of bounds.
  2379. > Whether THINK did this and why it caused an address error is, as textbooks
  2380. > say, an exercise for the reader.
  2381.  
  2382. Your guess is correct.  It ain't legal to use j in the same expression
  2383. as j++.  As to why it bus errored, I'd guess that the next word past
  2384. the end of the array is a heap management pointer, and the bus error
  2385. occurred when that word was stepped upon.
  2386.  
  2387. Anyone want to confirm/deny MY guess?
  2388.  
  2389.                     K<bob>
  2390. 
  2391. 
  2392. Path: ucivax!gateway
  2393. From: vthrc@mailbox.uq.oz.au (Danny Thomas)
  2394. Subject: Re: the assignment operator
  2395. Message-ID: <9208121513.aa29111@q2.ics.uci.edu>
  2396. Newsgroups: fa.think-c
  2397. Lines: 68
  2398. Date: 12 Aug 92 22:13:41 GMT
  2399.  
  2400. deleting description of problem posed by James Meiss
  2401. <jdm@boulder.colorado.edu>
  2402. >>I am suspicious of statements like these:
  2403. >>>> a[i][j] = b[i][j++]
  2404. >>is the j on the LHS the original value or post-incremented by the RHS?
  2405. >...
  2406. >
  2407. >>This is my guess, too:  Think C is evaluating the right hand side before the
  2408. >>left hand side. Why not use the Assembler command to take a look at what code
  2409. >...
  2410. >
  2411. >This is not a guess.
  2412. >
  2413. >The assignment operator (=), according to the ANSI standard, operates from right
  2414. >to left. It has to, because the value on the right hand side must be known
  2415. >before it can be assigned to the left. Therefore, any expressions appearring on
  2416. >the right will be evaluated before the left hand side is even considered.
  2417.  
  2418. I've noticed a few people talk about left and right. Certainly that is the
  2419. way  people naturally think of these operators working, but left & right
  2420. refer to the associativity of operators, NOT the order in which their
  2421. operands are evaluated.
  2422. Eg because "a+=b!=c" doesn't have any brackets AND the operators have the
  2423. same precedence it could be interpreted as either "(a+=(b!=c)" or
  2424. "(a+=b)!=c". But because the operators on either side of b are right
  2425. associative, b is grouped with the != operator first, meaning the
  2426. expression is interpreted as "a+=(b!=c)".
  2427.  
  2428.     This morning I felt more inclined to crack open the ultimate reference,
  2429.  the ANSI Standard document, American National Standard X3.159-1989.
  2430. To quote the Assignment Operator, Section 3.3.16 page 54, line 10:
  2431. "Semantics
  2432. An assignment operator stores a value in the object designated by the left
  2433. operand. An assignment expression has the value of the left operand after
  2434. the assignment, but is not an lvalue. The type of an assignment expression
  2435. is the type of the left operand unless the left operand has qualified type,
  2436. in which case it is the unqualified version of the type of the left
  2437. operand. The side effect of updating the stored value of the left operand
  2438. shall occur between the previous and next sequence points.
  2439.   The order of evaluation of the operands is unspecified."
  2440.  
  2441. Reading standardese can be a little confusing, but I think the ANSI C
  2442. languange is fairly clear, at least compared to the few other standards
  2443. I've glanced at. It also comes with a Rationale, which while not a part of
  2444. the standard, can be read to grasp the intent, and why certain features
  2445. were/weren't added/removed.
  2446.  
  2447. The penultimate sentence seems to say that the timing of the actual update
  2448. is unspecified, but presumably must occur after both LHS & RHS have been
  2449. fully evaluated, but the last sentence  says the address on the LHS could
  2450. be computed before OR after the value of the expression on the RHS.
  2451.  
  2452. MORAL: be very careful writing expressions with side-effects
  2453.  
  2454. PS the parentheses in C do NOT control the order of evaluation, they
  2455. control how sub-expressions are grouped!
  2456. (a-b)+c can be evaluated either as (a+c)-b, or (a-b)+c or (c-b)+a
  2457.  all of which normally produce the same result in the absence of
  2458. under/overflow or floating point exceptions/roundoff/truncation.
  2459.  
  2460. cheers,
  2461. X500: @c=AU [I'm about to update VTHRC entries, soon...]
  2462.        @o=University of Queensland
  2463.         @ou=Physiology and Pharmacology Department
  2464.          @ou=Vision Touch and Hearing
  2465.           @cn=Danny Thomas
  2466.            @rfc822Mailbox=vthrc@cc.uq.oz.au
  2467.  
  2468. 
  2469. 
  2470. Path: ucivax!gateway
  2471. From: P30WCC9%NIU.bitnet@uicvm.uic.edu (WES COVALT)
  2472. Subject: Scroll in Dialog
  2473. Message-ID: <9208121812.aa12881@q2.ics.uci.edu>
  2474. Newsgroups: fa.think-c
  2475. Lines: 15
  2476. Date: 13 Aug 92 01:12:44 GMT
  2477.  
  2478. Hello,
  2479.      I want to use a scrolling text field in a modal dialog.  I
  2480. can get the control drawn (in a "user item") but I can't activate
  2481. it.  Using the debugger, I've noticed that neither theEvent.where
  2482. nor the local equivalent is within the control rect!  In fact,
  2483. if I click about 20 pixels to the LEFT of the contol it activates!
  2484.     Does any one have some hints for me?
  2485.  
  2486.  
  2487. Thanks much.
  2488.  
  2489. Wes Covalt
  2490. BITNET ADDRESS: P30WCC9@NIU
  2491. INTERNET ADDRESS:  P30WCC9@MVS.CSO.NIU.EDU
  2492.  
  2493. 
  2494. 
  2495. Path: ucivax!gateway
  2496. From: P30WCC9%NIU.bitnet@uicvm.uic.edu (WES COVALT)
  2497. Subject: Garbage in TEXT
  2498. Message-ID: <9208121824.aa14368@q2.ics.uci.edu>
  2499. Newsgroups: fa.think-c
  2500. Lines: 15
  2501. Date: 13 Aug 92 01:24:56 GMT
  2502.  
  2503. Hello,
  2504.      I have stored some text into a TEXT (& STYL) resource and
  2505. I "insert" it into a TE field.  Most of the time, but not always
  2506. I get one or two garbage characters at the end of the text.  Once
  2507. in a while I get garbage in the middle of the text as well.
  2508.  
  2509. How do I get rid of this garbage?  I've played with changing the
  2510. strlen, but I still get the garbage characters.
  2511.  
  2512. Thanks much.
  2513.  
  2514. Wes Covalt
  2515. BITNET ADDRESS: P30WCC9@NIU
  2516. INTERNET ADDRESS:  P30WCC9@MVS.CSO.NIU.EDU
  2517.  
  2518. 
  2519. 
  2520. Path: ucivax!gateway
  2521. From: crunch@well.sf.ca.us (John Draper)
  2522. Subject: Re:  ARCHIVE: oops
  2523. Message-ID: <199208121805.AA18818@well.well.sf.ca.us>
  2524. Newsgroups: fa.think-c
  2525. Lines: 7
  2526. Date: 13 Aug 92 04:26:42 GMT
  2527.  
  2528. I actually pulled it off the "incoming" directory,  after I figured
  2529. out that the incoming directory is not printable (Restricted apparently),
  2530. but I "got" it anyway.   Nice piece of code,   It is most useful as
  2531. an example on how to use Networking code.
  2532.  
  2533. Thanx for the turn-on...
  2534. JD
  2535. 
  2536. 
  2537. Path: ucivax!gateway
  2538. From: nagel@cigna.uucp ("Mark D. Nagel")
  2539. Subject: Re: ARCHIVE: oops
  2540. Message-ID: <688.713716788@cigna.com>
  2541. In-Reply-To: Your message of Wed, 12 Aug 92 11:05:56 -0700.
  2542.      <199208121805.AA18818@well.well.sf.ca.us>
  2543. Newsgroups: fa.think-c
  2544. Reply-To: nagel@cigna.uucp
  2545. Organization: CIGNA FIRST, Irvine, CA
  2546. Lines: 21
  2547. Date: 13 Aug 92 15:02:34 GMT
  2548. Phone: (714) 727-4242
  2549.  
  2550. In message <199208121805.AA18818@well.well.sf.ca.us> you write:
  2551.  
  2552.     I actually pulled it off the "incoming" directory, after I
  2553.     figured out that the incoming directory is not printable
  2554.     (Restricted apparently), but I "got" it anyway.  Nice piece of
  2555.     code, It is most useful as an example on how to use Networking
  2556.     code.
  2557.  
  2558. Just so people are aware, ics.uci.edu recently changed the ftp
  2559. daemon to the same one used at wuarchive.wustl.edu and many other
  2560. sites these days.  (Also, they added an alias -- ftp.ics.uci.edu --
  2561. that everyone should use now just in case the archive machine
  2562. changes in the future).  This is why the incoming directory is
  2563. unreadable -- in that daemon, the incoming directory is supposed to
  2564. be a write-only dropoff point.  This adds a small amount of security
  2565. for those who ask people to drop off items (I guess random people
  2566. couldn't just scan stuff there and grab "private" things).  Anyway,
  2567. the files are still in the incoming directory, but won't be after
  2568. today.
  2569.  
  2570. Mark
  2571. 
  2572. 
  2573. Path: ucivax!gateway
  2574. From: SCHENKL@vax.cs.hscsyr.edu
  2575. Subject: RE: Ptrs...
  2576. Message-ID: <920812205309.20207151@vax.cs.hscsyr.edu>
  2577. Newsgroups: fa.think-c
  2578. Lines: 10
  2579. Date: 13 Aug 92 16:01:52 GMT
  2580. X-Vmsmail-To: SMTP%"fa.think-c-outbound-request@ics.uci.edu"
  2581.  
  2582.  
  2583. Pointers don't need to be locked, because there are fixed into memory. A
  2584. handle, a pointer to a pointer needs to be locked, because the memory
  2585. manager can move the block of data, and update the second pointer, while the
  2586. first pointer remains the same and valid.
  2587.  
  2588. I would use the CTB, just so you can have more that 2 serial ports if you
  2589. or your app's user has 'em.
  2590.  
  2591. Will
  2592. 
  2593. 
  2594. Path: ucivax!gateway
  2595. From: crunch@well.sf.ca.us (John Draper)
  2596. Subject: Re:  Ptrs...
  2597. Message-ID: <199208131621.AA10017@well.well.sf.ca.us>
  2598. Newsgroups: fa.think-c
  2599. Lines: 7
  2600. Date: 13 Aug 92 16:21:54 GMT
  2601.  
  2602. I also want to know the answer to this,  so please CC your response to me as
  2603. well.
  2604.  
  2605. In particular,  does SerSetBuf set an "internal" buffer (One that is
  2606. different than the "Read" buffer)?
  2607.  
  2608. JD
  2609. 
  2610. 
  2611. Path: ucivax!gateway
  2612. From: jgarner@u.washington.edu (Jeffery Garner)
  2613. Subject: AppleEvents: Receiver wants TargetID of Sender
  2614. Message-ID: <Pine.3.03.9208141951.A24205-b100000@hardy.u.washington.edu>
  2615. Content-Type: TEXT/PLAIN; charset=us-ascii
  2616. Mime-Version: 1.0
  2617. Newsgroups: fa.think-c
  2618. Lines: 45
  2619. Date: 15 Aug 92 03:05:33 GMT
  2620.  
  2621.  
  2622. Hello!  I'm a little confused about a lot of the structures for AppleEvents.
  2623. I've written my own custom event called PING, and the sending application
  2624. is able to send PING to the receiver.  The receiver beeps when it gets
  2625. PING.  No problem.
  2626.  
  2627. Now suppose the receiver wants to know who the sender is (TargetID is fine),
  2628. so that the Receiver can "register" the sender's name in a list (of
  2629. TargetIDs) so the Receiver can later initiate its own AppleEvents back
  2630. to the Sender at a later time...
  2631.  
  2632. The Question:  How does the receiver of an AppleEvent take apart the
  2633. AppleEvent structure in such a way as to get a TargetID out of it?
  2634.  
  2635. I tried doing the following, but it didn't work:
  2636.  
  2637. pascal OSErr HandlePING(AppleEvent *theAppleEvent, AppleEvent *reply,
  2638.               long myRefCon)
  2639. {
  2640.     OSErr         myErr;
  2641.     TargetID    myTarget;
  2642.     DescType    typeCode;
  2643.     Size        actualSize;
  2644.  
  2645.     myErr = AEGetParamPtr(theAppleEvent,keyAddressAttr,typeTargetID,
  2646.         &typeCode,(Ptr) &myTarget, sizeof(TargetID), &actualSize);
  2647.     if (myErr) return (myErr);
  2648.  
  2649.     myErr = RequiredCheck(theAppleEvent);
  2650.     if (myErr) return (myErr);
  2651.  
  2652.     SysBeep(1);
  2653.     return (noErr);
  2654. }
  2655.  
  2656. the first myErr returns an error.  It can't find the desc record or something.
  2657.  
  2658. Any thoughts would be appreciated!
  2659.  
  2660. Jeff Garner
  2661. Shoestring Software Products
  2662. Internet: jgarner@u.washington.edu
  2663.           jgarner@visual.spk.wa.us
  2664.  
  2665.  
  2666. 
  2667. 
  2668. Path: ucivax!gateway
  2669. From: C2MXBAR@fre.towson.edu (AARON BARNETT)
  2670. Subject: 2 questions
  2671. Message-ID: <01GNL8NQKZXU90N1PJ@TOE.TOWSON.EDU>
  2672. Content-transfer-encoding: 7BIT
  2673. MIME-version: 1.0
  2674. Newsgroups: fa.think-c
  2675. X-VMS-To: TOE::IN%"think-c@ics.uci.edu"
  2676. Lines: 9
  2677. Date: 15 Aug 92 03:43:52 GMT
  2678. X-Envelope-to: think-c@ics.uci.edu
  2679.  
  2680. hello,
  2681.  1: i want to do something similar to DragGrayRgn, but I want to drag
  2682. a whole rgn, like colors and all as if you had picked the _thing_ up.
  2683. is there a trap that has evaded my finding. it seems to me to be a mac
  2684. thing cus menus come and go without causing an update event.
  2685.  
  2686.  2: I need sin() and cos() but don't want ansi. is it in sane.
  2687.  
  2688. thanks in advance
  2689. 
  2690. 
  2691. Path: ucivax!gateway
  2692. From: jgarner@u.washington.edu ("Jeff D. Garner")
  2693. Subject: Re: AppleEvents: Receiver wants TargetID of Sender
  2694. Message-ID: <Pine.3.03.9208151652.A18877-c100000@hardy.u.washington.edu>
  2695. In-Reply-To: <Pine.3.03.9208141951.A24205-b100000@hardy.u.washington.edu>
  2696. Content-Type: TEXT/PLAIN; charset=us-ascii
  2697. Mime-Version: 1.0
  2698. Newsgroups: fa.think-c
  2699. Lines: 81
  2700. Date: 15 Aug 92 23:46:08 GMT
  2701.  
  2702.  
  2703. Well, I finally found an answer to my problem, in Apple's Q&A stack of
  2704. all places...  ( I keep forgetting to look in places like that!).
  2705.  
  2706. Here's the solution for those who are interested:
  2707.  
  2708. -------------------------------------------------
  2709.  
  2710. How can I identify the sender of an Apple event?
  2711.  
  2712. If your application is just sending a reply, it should not be creating an
  2713. Apple event or calling AESend. Instead, it should stuff the response
  2714. information into the reply event in the Apple event handler, as shown on
  2715. page 6-50 of Inside Macintosh Volume VI. The Apple Event Manager takes
  2716. care of addressing and sending the event.
  2717.  
  2718. To find the target ID or process serial number of the sender of an Apple
  2719. Event, use AEGetAttributePtr to extract the address attribute, as follows:
  2720.  
  2721.  
  2722. retCode := AEGetAttributePtr(myAppleEvent, keyAddressAttr,
  2723.   typeWildCard, senderType, @senderBuffer, sizeof(senderBuffer),
  2724.   senderSize)
  2725.  
  2726. The senderBuffer can later be used with AECreateDesc to create an address
  2727. to be passed to AESend. The buffer should be at least as large as data
  2728. type TargetID. See Inside Macintosh Volume VI, page 5-22, for a
  2729. description of
  2730. TargetID.
  2731.  
  2732.  
  2733.  
  2734. On 15 Aug 1992, Jeffery Garner wrote:
  2735.  
  2736. >
  2737. > Hello!  I'm a little confused about a lot of the structures for AppleEvents.
  2738. > I've written my own custom event called PING, and the sending application
  2739. > is able to send PING to the receiver.  The receiver beeps when it gets
  2740. > PING.  No problem.
  2741. >
  2742. > Now suppose the receiver wants to know who the sender is (TargetID is fine),
  2743. > so that the Receiver can "register" the sender's name in a list (of
  2744. > TargetIDs) so the Receiver can later initiate its own AppleEvents back
  2745. > to the Sender at a later time...
  2746. >
  2747. > The Question:  How does the receiver of an AppleEvent take apart the
  2748. > AppleEvent structure in such a way as to get a TargetID out of it?
  2749. >
  2750. > I tried doing the following, but it didn't work:
  2751. >
  2752. > pascal OSErr HandlePING(AppleEvent *theAppleEvent, AppleEvent *reply,
  2753. >               long myRefCon)
  2754. > {
  2755. >     OSErr         myErr;
  2756. >     TargetID    myTarget;
  2757. >     DescType    typeCode;
  2758. >     Size        actualSize;
  2759. >
  2760. >     myErr = AEGetParamPtr(theAppleEvent,keyAddressAttr,typeTargetID,
  2761. >         &typeCode,(Ptr) &myTarget, sizeof(TargetID), &actualSize);
  2762. >     if (myErr) return (myErr);
  2763. >
  2764. >     myErr = RequiredCheck(theAppleEvent);
  2765. >     if (myErr) return (myErr);
  2766. >
  2767. >     SysBeep(1);
  2768. >     return (noErr);
  2769. > }
  2770. >
  2771. > the first myErr returns an error.  It can't find the desc record or something.
  2772. >
  2773. > Any thoughts would be appreciated!
  2774. >
  2775. > Jeff Garner
  2776. > Shoestring Software Products
  2777. > Internet: jgarner@u.washington.edu
  2778. >           jgarner@visual.spk.wa.us
  2779. >
  2780. >
  2781.  
  2782.  
  2783. 
  2784. 
  2785. Path: ucivax!gateway
  2786. From: jimlynch@netcom.com (Jim Lynch)
  2787. Subject: Here is a portion of the about think-c file.
  2788. Message-ID: <9208161618.AA23232@netcom.netcom.com>
  2789. Newsgroups: fa.think-c
  2790. Lines: 9
  2791. Date: 16 Aug 92 16:19:11 GMT
  2792.  
  2793. One request: if someone submits a question on something that seems simple to
  2794. you, please remember that it will seem simple to many of the other 425+
  2795. subscribers to the list.  Please reply to the sender directly unless you
  2796. feel it is warranted to broadcast the reply.  The person who submitted the
  2797. question is urged to followup at some time in the future with a summary of
  2798. responses, so others who might be interested can see what the solution was.
  2799. This simple rule will prevent much of the chaff that is present on many
  2800. mailing lists and newsgroups.
  2801.  
  2802. 
  2803. 
  2804. Path: ucivax!gateway
  2805. From: KE1RKEN%CUCHEM.bitnet@cunyvm.cuny.edu
  2806. Subject: File Searching in HFS
  2807. Message-ID: <9208171053.aa17104@q2.ics.uci.edu>
  2808. Newsgroups: fa.think-c
  2809. X-Original-To: think-c@ics.uci.edu, KE1RKEN
  2810. Lines: 10
  2811. Date: 17 Aug 92 17:53:45 GMT
  2812.  
  2813. I hope someone can help me with code for getting a program to search
  2814. for a file. I know it's name. I know what folder it's in. I just don't
  2815. know where that folder is. I don't want to use a dialogue box.
  2816.  
  2817. Perhaps this is a bit much. Still, it all reduces to getting the list
  2818. of files or folders in a givin volume, I think. I can't find the routine
  2819. for doing this. The SF routines must use this in the dialogue box.
  2820. Where can I find it?
  2821.  
  2822. Many Thanks, Bob
  2823. 
  2824. 
  2825. Path: ucivax!gateway
  2826. From: chai@cs.uiuc.edu
  2827. Subject: Shall we have "simple" messages?
  2828. Message-ID: <9208172138.AA25335@a.cs.uiuc.edu>
  2829. Newsgroups: fa.think-c
  2830. Lines: 13
  2831. Date: 17 Aug 92 21:38:26 GMT
  2832.  
  2833. >One request: if someone submits a question on something that seems simple to
  2834. >you, please remember that it will seem simple to many of the other 425+
  2835. >subscribers to the list.  Please reply to the sender directly unless you
  2836. >feel it is warranted to broadcast the reply.  The person who submitted the
  2837.  
  2838. Hmm... well, sometimes I learn something from these, and the rest of
  2839. the time, I just delete it -- no problems.
  2840.  
  2841. Perhaps it's a lot harder for some other people?
  2842.  
  2843. What do people feel about it?
  2844.  
  2845. Ian
  2846. 
  2847. 
  2848. Path: ucivax!gateway
  2849. From: C2MXBAR@fre.towson.edu (AARON BARNETT)
  2850. Subject: Re: simple
  2851. Message-ID: <01GNP6SO2IOY934PY1@TOE.TOWSON.EDU>
  2852. Content-transfer-encoding: 7BIT
  2853. MIME-version: 1.0
  2854. Newsgroups: fa.think-c
  2855. X-VMS-To: TOE::IN%"think-c@ics.uci.edu"
  2856. Lines: 5
  2857. Date: 17 Aug 92 23:31:05 GMT
  2858. X-Envelope-to: think-c@ics.uci.edu
  2859.  
  2860. >Hmm... well, sometimes I learn something from these, and the rest of
  2861. >the time, I just delete it -- no problems.
  2862.  
  2863. agreed
  2864.  
  2865. 
  2866. 
  2867. Path: ucivax!gateway
  2868. From: eriks@fenix.lin.foa.se (Erik Svensson FOA2)
  2869. Subject: File Searching in HFS
  2870. Message-ID: <9208180720.AA01518@fenix.lin.foa.se>
  2871. In-Reply-To: KE1RKEN%CUCHEM.bitnet@cunyvm.cuny.edu's message of 17 Aug 92 17:53:45 GMT <9208171053.aa17104@q2.ics.uci.edu>
  2872. Newsgroups: fa.think-c
  2873. Lines: 11
  2874. Date: 18 Aug 92 07:17:19 GMT
  2875.  
  2876. Why don't you use the system 7 routines for this?
  2877. There's a call PBCatSearch (I think it was, don't have IM VI available right
  2878. now) that'll find you your file.
  2879.  
  2880. Erik Svensson            Research Officer
  2881. Guided Weapons Division        National Defense Research Establishment (FOA)
  2882. Stockholm            Sweden
  2883.  
  2884. net.address:     eriks@fenix.lin.foa.se
  2885.  
  2886. "I've got LOT's of common sense. I just choose to ignore it." -- Calvin
  2887. 
  2888. 
  2889. Path: ucivax!gateway
  2890. From: wnn@ornl.gov (Wolfgang Naegeli)
  2891. Subject: Mailer problems
  2892. Message-ID: <9208181335.AA18956@oaunx1.CTD.ORNL.GOV>
  2893. Newsgroups: fa.think-c
  2894. Lines: 40
  2895. Date: 18 Aug 92 15:26:25 GMT
  2896.  
  2897.         Reply to:   Mailer problems
  2898. Starting about July 15 for some two weeks we had severe problems with
  2899. ics.uci.edu opening but not closing SMTP connections when sending us messages.
  2900.  
  2901. After all SMTP listener sockets on our Mail*Link SMTP gateway were tied up, we
  2902. were unable to recieve any incoming messages from anywhere. We had no telling
  2903. of what had happened since outgoing traffic was not affected. We had to reboot
  2904. frequently when we got dinged by the administrator of our central mail router
  2905. who complained that large mail queues were building up for us.
  2906.  
  2907. Did any other think-c recipients experience similar problems?
  2908.  
  2909. On 8/13 Mark wrote:
  2910. > ics.uci.edu recently changed the ftp daemon to the same one used at
  2911. > wuarchive.wustl.edu and many other sites these days.
  2912.  
  2913. Could that change have had something to do with our problems? When exactly was
  2914. that change made?
  2915.  
  2916. Of course, as usual, all of this happened while I was out of town. Starnine
  2917. Tech Support sent us a diagnostic tool, but as mysteriously as the problems had
  2918. started, they disappeared. Fortunately we were able to capture the last
  2919. occurrence and after Starnine analyzed the postmortem and fingered ics.uci.edu
  2920. I wrote to its postmaster, but got his reply that he had not noticed anything
  2921. unusual.  Only last week, I realized that ics.usi.edu actually is the host
  2922. think-c comes from.
  2923.  
  2924. Even though we are problem-free again, we would like to get to the bottom of
  2925. this in hopes of preventing any possible future recurrence since it affected
  2926. many of our e-mail users.
  2927.  
  2928. Any facts, clues, hints, and observations will be greatly appreciated.
  2929.  
  2930. Wolfgang N. Naegeli
  2931. University of Tennessee & Oak Ridge National Laboratory
  2932. Internet: wnn@ornl.gov  (best)       Bitnet: wnn@ornlstc
  2933. QuickMail (QM-QM): Wolfgang Naegeli @ 615-574-4510
  2934. Phone: 615-574-6143       Fax: 615-574-6141 (OrchidFax)
  2935.  
  2936.  
  2937. 
  2938. 
  2939. Path: ucivax!gateway
  2940. From: slosser@mindseye.berkeley.edu (Eric Slosser)
  2941. Subject: 2 questions
  2942. Message-ID: <9208181627.AA04042@mindseye.berkeley.edu>
  2943. In-Reply-To: AARON BARNETT's message of 15 Aug 92 03:43:52 GMT <01GNL8NQKZXU90N1PJ@TOE.TOWSON.EDU>
  2944. Newsgroups: fa.think-c
  2945. Lines: 4
  2946. Date: 18 Aug 92 19:48:47 GMT
  2947.  
  2948.  
  2949. For your question about dragging a whole object around, look in
  2950. Knaster and Rollin's book for some very nice sample code.
  2951.  
  2952. 
  2953. 
  2954. Path: ucivax!gateway
  2955. From: huff@mcclb0.med.nyu.edu ("Edward J. Huff")
  2956. Subject: Smooth Animation vs. QuickTime
  2957. Message-ID: <01GNQQL3P5UQ00095E@MCCLB0.MED.NYU.EDU>
  2958. Content-transfer-encoding: 7BIT
  2959. Newsgroups: fa.think-c
  2960. Lines: 11
  2961. Date: 19 Aug 92 02:02:53 GMT
  2962. X-Envelope-to: think-c@ics.uci.edu
  2963.  
  2964. There has been some discussion of smooth animation but no one has
  2965. mentioned quicktime.  Isn't smooth animation the purpose of quicktime?
  2966. (I have a Quadra 950 here which came with quicktime, but I haven't
  2967. used it yet...  I noticed that there is a quicktime directory at
  2968. ftp.apple.com which contains the quicktime INIT, identical to the
  2969. one which came on my system).
  2970. --
  2971. Edward J. Huff   huff@mcclb0.med.nyu.edu   (212)998-8465
  2972. Keck Laboratory for Biomolecular Imaging
  2973. NYU Chemistry Deptartment, 31 Washington Place, New York NY 10003
  2974.  
  2975. 
  2976. 
  2977. Path: ucivax!gateway
  2978. From: wadew@ducvax.auburn.edu (Wade Williams)
  2979. Subject: Great job Symantec!
  2980. Message-ID: <9208191432.AA02910@accs.duc.auburn.edu>
  2981. Newsgroups: fa.think-c
  2982. Lines: 56
  2983. Date: 19 Aug 92 14:30:56 GMT
  2984.  
  2985. Someone who is taking an online C course complained last night that THINK C
  2986. takes up more room than her DOS C files.  She was doing the classic Hello
  2987. World and had the following sizes:
  2988.  
  2989. Hello World project (with ANSI lib)  64K
  2990. Hello World built app                20K
  2991.  
  2992. Her DOS project was
  2993.  
  2994. Hello.c    2K
  2995. Hello.exe  8K (this was after deleting Hello.obj)
  2996.  
  2997. I explained to her that if she removed objects from her THINK C project,
  2998. that was the same as deleting Hello.OBJ on the DOS side.
  2999.  
  3000. That made the score:
  3001. Hello World project   8K
  3002. Hello World app       20K
  3003.  
  3004. So, you end up with 28K on Macintosh vs. 10K on DOS.
  3005.  
  3006. I went on to explain that the DOS machine can pretty much just write to the
  3007. screen whereas the Mac has to draw a window, handle events, etc.  That
  3008. accounts for the extra 10K.  I also explained that Smart linking includes a
  3009. whole file even if only one function is referenced (that is correct,
  3010. right?).  I explained that if she really wanted to take the time, she could
  3011. copy just the functions she needed and paste those into her project and
  3012. remove the ANSI library, making for a much smaller project.  However, the
  3013. convenience makes that not worth the trouble.
  3014.  
  3015. Then I examined the built Hello World app.  A 20K app had a movable window,
  3016. handled events, had a functioning menubar, supported clipboard operations
  3017. and supported backgrounding. I was also able to get the app to run stabily
  3018. in 55K of RAM.
  3019.  
  3020. Can you imagine how much code it would take to create a DOS or Windows
  3021. program that did the same thing?  I'd be willing to bet a whole lot more
  3022. than 20K.
  3023.  
  3024. I know that most of the credit goes to Apple for providing such a great
  3025. Toolbox, but I'd like to congratulate Symantec as well.  It really amazes
  3026. me that it only takes 20K to do all the things that the Hello World app
  3027. does.  I know it doesn't sound like much, but if you sit down and think
  3028. about it, it's really a lot.
  3029.  
  3030. Good job Symantec!
  3031.  
  3032.  
  3033. -------------------------------------------------------------------
  3034. Wade Williams                        "One likes to believe in the freedom
  3035. User Services Specialist          of music, but glittering prizes and
  3036. Academic Computing Services    endless comprimises shatter the
  3037. Auburn University                 illusion of integrity."
  3038. wadew@ducvax.auburn.edu                          (N. Peart of Rush)
  3039. --------------------------------------------------------------------
  3040.  
  3041. 
  3042. 
  3043. Path: ucivax!gateway
  3044. From: mxmora@unix.sri.com
  3045. Subject: Re: Smooth Animation vs. QuickTime
  3046. Message-ID: <9208191512.AA02946@unix.sri.com>
  3047. Newsgroups: fa.think-c
  3048. Lines: 19
  3049. Date: 19 Aug 92 15:12:32 GMT
  3050.  
  3051. >There has been some discussion of smooth animation but no one has
  3052. >mentioned quicktime.  Isn't smooth animation the purpose of quicktime?
  3053. >(I have a Quadra 950 here which came with quicktime, but I haven't
  3054. >used it yet...  I noticed that there is a quicktime directory at
  3055. >ftp.apple.com which contains the quicktime INIT, identical to the
  3056. >one which came on my system).
  3057.  
  3058. A quadra is about the only mac that can do quick time smoothly so thats not
  3059. an option.
  3060.  
  3061. Matt
  3062. _____________________________________________________________________
  3063.    Matthew Xavier Mora                   |  The keeper of the UMPG
  3064.    SRI International                     |  Matt_Mora@QM.sri.com
  3065.    [sent using Eudora 1.3b46]            |  mxmora@unix.sri.com
  3066. _____________________________________________________________________
  3067. "You give good headgames, your tongue is so strange, caught in these
  3068.  backstage chains." _Crashed_ by Slik Toxik
  3069.  
  3070. 
  3071. 
  3072. Path: ucivax!gateway
  3073. From: C2MXBAR@fre.towson.edu (AARON BARNETT)
  3074. Subject: terrain generator
  3075. Message-ID: <01GNRRHK7GW2934X1V@TOE.TOWSON.EDU>
  3076. Content-transfer-encoding: 7BIT
  3077. MIME-version: 1.0
  3078. Newsgroups: fa.think-c
  3079. X-VMS-To: TOE::IN%"think-c@ics.uci.edu"
  3080. Lines: 3
  3081. Date: 19 Aug 92 19:46:22 GMT
  3082. X-Envelope-to: think-c@ics.uci.edu
  3083.  
  3084. i need to generate some 3-d terrain randomly (mountains vally) I can
  3085. handle displaying it, but I havn't a clue how to generate it.
  3086. anyone...
  3087. 
  3088. 
  3089. Path: ucivax!gateway
  3090. From: franklin@eecs.ucdavis.edu (Paul Franklin)
  3091. Subject: Re: terrain generator
  3092. Message-ID: <9208200042.AA18446@pine.eecs.ucdavis.edu>
  3093. In-Reply-To: Your message of "19 Aug 92 19:46:22 GMT."
  3094.              <01GNRRHK7GW2934X1V@TOE.TOWSON.EDU>
  3095. Newsgroups: fa.think-c
  3096. Reply-To: pdfranklin@ucdavis.edu
  3097. Lines: 26
  3098. X-Mts: smtp
  3099. Date: 20 Aug 92 00:43:17 GMT
  3100.  
  3101.  
  3102. Your message dated: 19 Aug 92 19:46:22 GMT
  3103. >i need to generate some 3-d terrain randomly (mountains vally) I can
  3104. >handle displaying it, but I havn't a clue how to generate it.
  3105. >anyone...
  3106.  
  3107. This is really a math problem.  What you want is a function f(x,y)
  3108. that will give you a 3-D terrain.  Try
  3109.  
  3110. f(x,y) = 10/(1+x*x+y*y)
  3111.  
  3112. Now, you should be able to combine these.  For example,
  3113.  
  3114. f(x,y) = 10/(1 + x*x + y*y) - 5/(1 + (x-4)*(x-4) + (y+3)*(y+3))
  3115.  
  3116. Try plotting that one.  The more terms, the more hills/valleys.
  3117. Looking at the valley in the second example, the -5 is its height (the
  3118. negative makes it a valley), and x-4=0, y+3=0 gives you the center of
  3119. the valley (4,-3).  You could also make it something other than a
  3120. round hill (oval?) by multiplying (y+3) by 2.  Just play with it, and
  3121. see what combinations seem to fit in with what you want.
  3122.  
  3123. I'm pretty sure I got the function right; I took it from memory and
  3124. just tried a few test cases in my head.
  3125.  
  3126. --Paul Franklin
  3127. 
  3128. 
  3129. Path: ucivax!gateway
  3130. From: pmiller@topaz.bmr.gov.au (Peter Miller)
  3131. Subject: Re: terrain generator
  3132. Message-ID: <9208200217.AA18036@topaz.bmr.gov.au>
  3133. In-Reply-To: Your message of 19 Aug 92 19:46:22 +0000.
  3134.              <01GNRRHK7GW2934X1V@TOE.TOWSON.EDU>
  3135. Newsgroups: fa.think-c
  3136. Lines: 16
  3137. Date: 20 Aug 92 02:14:42 GMT
  3138.  
  3139.  
  3140. AARON BARNETT <C2MXBAR@fre.towson.edu> writes:
  3141. > i need to generate some 3-d terrain randomly (mountains vally) I can
  3142. > handle displaying it, but I havn't a clue how to generate it.
  3143. > anyone...
  3144.  
  3145. Try Eric Haines' SPD package for testing renderers.
  3146. One of the scenes is fractal mountains.
  3147.  
  3148. The comp.graphics FAQ lists several archive sites,
  3149. if you don't have usenet or ftp, try sending email to
  3150.     netlib@research.att.com
  3151. with a subject of "help".  This archive also has SPD.
  3152.  
  3153. Regards
  3154. Peter Miller.
  3155. 
  3156. 
  3157. Path: ucivax!gateway
  3158. From: de19@umail.umd.edu (Dana S Emery)
  3159. Subject: Re: terrain generator
  3160. Message-ID: <Mailstrom.B54.39154.-2558.de19@umail.umd.edu>
  3161. In-Reply-To: Your message <01GNRRHK7GW2934X1V@TOE.TOWSON.EDU> of 19 Aug 92
  3162.  19:46:22 GMT
  3163. Content-Type: TEXT/plain; charset=US-ASCII
  3164. Newsgroups: fa.think-c
  3165. Lines: 17
  3166. Date: 20 Aug 92 04:33:40 GMT
  3167.  
  3168. >   i need to generate some 3-d terrain randomly (mountains
  3169. >   vally) I can handle displaying it, but I havn't a clue
  3170. >   how to generate it. anyone...
  3171.  
  3172.  
  3173. If this was for a game, you might be able to do with random choice of cleverly
  3174. predesigned 'tiles', for an overhead view you could also make them rotateable.
  3175.  
  3176. Other than that it is time to break out the acm graphics journals and dig into
  3177. some serious fractal hackery.  I would attempt to discern some rules as to what
  3178. makes mountains grow, and then use suitable randomization of that to establish a
  3179. skeleton which would be fleshed out useing fractal textureing.  Unfortunately
  3180. this is a wee bit above my present math skills.  Hope you are targeting some
  3181. nice crunchy hardware.
  3182.  
  3183. Dana S Emery <de19@umail.umd.edu>
  3184.  
  3185. 
  3186. 
  3187. Path: ucivax!gateway
  3188. From: bobm@imagine.convex.com (Bob Miller)
  3189. Subject: Re: terrain generator
  3190. Message-ID: <9208201611.AA12786@imagine.convex.com>
  3191. In-Reply-To: Your message of "19 Aug 92 19:46:22 GMT."
  3192.              <01GNRRHK7GW2934X1V@TOE.TOWSON.EDU>
  3193. Newsgroups: fa.think-c
  3194. X-Quote-Of-The: I sure like to succeed, but you can't get away from the fact
  3195.                 that failure gives you a great liberty.  -- Jack Crabb
  3196. Lines: 78
  3197. Date: 20 Aug 92 16:12:21 GMT
  3198.  
  3199. > i need to generate some 3-d terrain randomly (mountains vally) I can
  3200. > handle displaying it, but I havn't a clue how to generate it.
  3201. > anyone...
  3202.  
  3203. You can generate random fractal terrain pretty easily.
  3204.  
  3205. The basic idea is to start with a square, subdivide it, into quarters,
  3206. and then randomly perturb the center point.  Now you have
  3207. four smaller squares, so repetitively subdivide them.  As the squares
  3208. get smaller, the perturbations get smaller too.
  3209.  
  3210. For example,  (I just typed this in, so it probably has a bug or two
  3211. and a few syntax errors...)
  3212.  
  3213. #define LOGN 5
  3214. #define N (1 << LOGN)
  3215.  
  3216. int elevation[N + 1][N + 1];    /* 33x33 elevation grid, ranges from */
  3217.                 /* -1000 to 1000 */
  3218.  
  3219. int random(int n)
  3220. {
  3221.     /* return random integer uniformly distributed between 0 and n - 1; */
  3222. }
  3223.  
  3224. /* average_elev returns average elevation among four points. */
  3225.  
  3226. int average_elev(minx, miny, maxx, maxy)
  3227. {
  3228.     return (elevation[minx][miny] + elevation[minx][maxy] +
  3229.         elevation[maxx][miny] + elevation[maxx][maxy]) / 4;
  3230. }
  3231.  
  3232. /*
  3233.  *  subdivide() recursively subdivides a square area in elevation
  3234.  *  into smaller squares, perturbing each one's center.
  3235.  */
  3236. void subdivide(int minx, int miny, int maxx, int maxy, int perturbation_size)
  3237. {
  3238.     int midx = (minx + maxx) / 2;
  3239.     int midy = (miny + maxy) / 2;
  3240.     int avg_elev;
  3241.     int half_pert = perturbation_size / 2;
  3242.  
  3243.     if (maxx <= minx + 1)
  3244.     {    /* This is a 1x1 square; don't subdivide any further */
  3245.     return;
  3246.     }
  3247.  
  3248.     avg_elev = average_elev(minx, miny, maxx, maxy);
  3249.     elevation[midx][midy] = random(perturbation_size) - half_pert + avg_elev;
  3250.  
  3251.     subdivide(minx, miny, midx, midy, half_pert);
  3252.     subdivide(midx, miny, maxx, midy, half_pert);
  3253.     subdivide(minx, midy, midx, maxy, half_pert);
  3254.     subdivide(midx, midy, maxx, maxy, half_pert);
  3255. }
  3256.  
  3257. /*
  3258.  *  generate_terrain() generates, in the elevation array, a randomly
  3259.  *  perturbed N+1 x N+1 elevation map.
  3260.  */
  3261.  
  3262. void generate_terrain(void)
  3263. {
  3264.     /* Pick four corners at random heights. */
  3265.  
  3266.     elevation[0][0] = random(1000) - 500;
  3267.     elevation[0][N] = random(1000) - 500;
  3268.     elevation[N][0] = random(1000) - 500;
  3269.     elevation[N][N] = random(1000) - 500;
  3270.  
  3271.     subdivide(0, 0, N, N, 500);
  3272. }
  3273.  
  3274. You get the idea, don't you?
  3275.  
  3276.                     K<bob>
  3277. 
  3278. 
  3279. Path: ucivax!gateway
  3280. From: chai@cs.uiuc.edu
  3281. Subject: Summaries yes, multiple replies no
  3282. Message-ID: <9208202247.AA13115@a.cs.uiuc.edu>
  3283. Newsgroups: fa.think-c
  3284. Lines: 16
  3285. Date: 20 Aug 92 22:47:22 GMT
  3286.  
  3287. Hi, everyone.
  3288.  
  3289. Recently I posted a message saying that I sometimes benifited from the many
  3290. replies to a problem, and had no trouble deleting stuff that didn't interest
  3291. me and so I would like to see them continue.
  3292.  
  3293. However, several people have pointed out that the listowner has guidlines
  3294. saying that this should not be done -- instead, summaries should be posted
  3295. by the original querient at the end of his/her search.
  3296.  
  3297. Since this is the listowner's policy, yes, we should follow it. So I retract
  3298. my earlier statements.
  3299.  
  3300. Thanks for your patience.
  3301.  
  3302. Ian
  3303. 
  3304. 
  3305. Path: ucivax!gateway
  3306. From: rodrigo@cmf.nrl.navy.mil
  3307. Subject: In TCL, file is locked?
  3308. Message-ID: <9208211239.AA20120@cmsun.cmf.nrl.navy.mil>
  3309. Newsgroups: fa.think-c
  3310. Lines: 19
  3311. Date: 21 Aug 92 12:39:59 GMT
  3312.  
  3313.  
  3314.  
  3315. I am working with TC 5.0.2 and TCL 1.1.2. When I open a file (document)
  3316. and I try to open it again I would like to be able to issue an alert
  3317. saying something like " This file is being used..." . The Open method in
  3318. the class DataFile uses FailOSError with HOpen as argument. If there is
  3319. an error from HOpen, FailOSError handles it. This led me to belive that I
  3320. have to subclass FailOSError to handle a particular error in HOpen. However,
  3321. I doubt it and I am sure there is something simpler that can be done.
  3322.  
  3323. So, my question is: Is there a way to check if a file is being used or locked
  3324. (using TCL) before sending the Open message?
  3325. Any help on this will be appreciated.
  3326.  
  3327. Thanks.
  3328.  
  3329. Rodrigo.
  3330.  
  3331. rodrigo@cmf.nrl.navy.mil
  3332. 
  3333. 
  3334. Path: ucivax!gateway
  3335. From: koops@owlnet.rice.edu (Ryan Richard Koopmans)
  3336. Subject: remove me
  3337. Message-ID: <9208211625.AA18283@spotted.owlnet.rice.edu>
  3338. Newsgroups: fa.think-c
  3339. Lines: 1
  3340. Date: 21 Aug 92 16:25:42 GMT
  3341.  
  3342. Please remove me from the mailing list.
  3343. 
  3344. 
  3345. Path: ucivax!gateway
  3346. From: KE1RKEN%CUCHEM.bitnet@cunyvm.cuny.edu
  3347. Subject: Re:HFS file searching
  3348. Message-ID: <9208210953.aa09257@q2.ics.uci.edu>
  3349. Newsgroups: fa.think-c
  3350. X-Original-To: think-c@ics.uci.edu, KE1RKEN
  3351. Lines: 21
  3352. Date: 21 Aug 92 16:53:58 GMT
  3353.  
  3354. My thanks to all those who responded to my query about how to search
  3355. for a file within a folder, whose location is not precisely known.
  3356. Several respondents recomended use of PBGetCatInfo in Inside Mac VI.
  3357. Another, with warning of the task ahead, recomended Inside Mac IV.
  3358.  
  3359. Further traipsing about the internet ended in Apple.com (ftp:130.43.2.3)
  3360. in /dts/mac/sc was found the file: sc-018-stdfilesample.hqx. It appears
  3361. to be extensive in a variety of calls to the file system. It is, of course,
  3362. written in Pascal using MPW. There are some cryptic indications in the
  3363. file that a C version was considered or perhaps even implemeted. Such
  3364. a file cannot be found, unfortunately.
  3365.  
  3366. So, does anyone know of this .c file? If not, if some brave individual
  3367. were to try to translate this program into THINK C, would he/she be able
  3368. to post it to the net for public consumption without violating Apple's
  3369. rights (which are indicated to be reserved). I would ponder (with
  3370. great trepidation) such an effort, but not for just my consumption.
  3371. The main file is some 65 pages in length and I am not a Pascal programmer.
  3372.  
  3373. Best Wishes,
  3374. Bob Kennedy
  3375. 
  3376. 
  3377. Path: ucivax!gateway
  3378. From: P30WCC9%NIU.bitnet@uicvm.uic.edu (WES COVALT)
  3379. Subject: GetResource( 'TEXT', id) problem
  3380. Message-ID: <9208221651.aa10405@q2.ics.uci.edu>
  3381. Newsgroups: fa.think-c
  3382. Lines: 12
  3383. Date: 22 Aug 92 23:51:40 GMT
  3384.  
  3385. I have been using GetResource() to get 'TEXT' resources for various
  3386. dialog screens.  I have been getting "funny" characters at the end
  3387. of these text files.  I release the resource  and dispose of the
  3388. handle after I use the resource (and show a particular screen).
  3389.    I know that the problem is at GetResource becuase when I look
  3390. at the text pointed to with the debugger, the text is all mine
  3391. except for the these few characters.  Sometimes these characters are
  3392. from another of my text resources that I had just shown.  Sometimes.
  3393.  
  3394.    Do I have to initialize something?  Do I need to clear memory?
  3395. Is there another way of storing large amounts of text (with style)
  3396. and not use a PICT?
  3397. 
  3398. 
  3399. Path: ucivax!gateway
  3400. From: dockx@cs.kuleuven.ac.be
  3401. Subject: c on mac
  3402. Message-ID: <9208170832.AA21546@neptunus.cs.kuleuven.ac.be>
  3403. Newsgroups: fa.think-c
  3404. Lines: 6
  3405. X-Mts: smtp
  3406. Date: 24 Aug 92 03:30:15 GMT
  3407.  
  3408. I'm in the process of scanning c++ language to buy for my mac. Can you,
  3409. or one of your subscribers, tell me why I should (or shouldn't) buy Think-c?
  3410.  
  3411. Jan Dockx    "dockx@cs.kuleuven.ac.be"
  3412. Leuven, Belgium
  3413. Europe
  3414. 
  3415. 
  3416. Path: ucivax!gateway
  3417. From: nagel@buckaroo.ICS.UCI.EDU (Mark Nagel)
  3418. Subject: ARCHIVE: Arashi (Project STORM) source code
  3419. Message-ID: <3216.714627210@buckaroo.ics.uci.edu>
  3420. Newsgroups: fa.think-c
  3421. Reply-To: jmunkki@sandman.cs.hut.fi
  3422. Lines: 26
  3423. Date: 24 Aug 92 03:36:03 GMT
  3424.  
  3425.  
  3426. ------- Forwarded Message
  3427.  
  3428. Date:    Thu, 20 Aug 92 21:55:10 +0300
  3429. From:    jmunkki@sandman.cs.hut.fi
  3430. To:      think-c-request@ics.uci.edu
  3431. Subject: Arashi (STORM) source code
  3432.  
  3433. The complete source code and documentation set for the Arashi (Project STORM)
  3434. game has been placed in the /incoming directory. Please read the included
  3435. read me file.
  3436.  
  3437. If you are interested in writing arcade games for the Macintosh, you should
  3438. definitely at least take a look.
  3439.  
  3440. The file is quite large (over 800KB).
  3441.  
  3442.     Juri Munkki
  3443.     jmunkki@hut.fi
  3444.  
  3445. ------- End of Forwarded Message
  3446.  
  3447. [saved as: /mac/think-c/code/Arashi_Source.cpt.bin; 840K]
  3448.  
  3449.   [NOTE: This is a BINARY submission; remember to use binary mode when]
  3450.   [retrieving this file.                          ]
  3451. 
  3452. 
  3453. Path: ucivax!gateway
  3454. From: nagel@buckaroo.ICS.UCI.EDU (Mark Nagel)
  3455. Subject: ARCHIVE: sockets library removed
  3456. Message-ID: <3430.714627704@buckaroo.ics.uci.edu>
  3457. Newsgroups: fa.think-c
  3458. Reply-To: think-c-request@ics.uci.edu
  3459. Lines: 9
  3460. Date: 24 Aug 92 03:47:11 GMT
  3461.  
  3462. The author of the sockets library notified me that the version I
  3463. placed in the archives is not for distribution, so I removed it.
  3464. The real version should be ready real soon now, so please, be
  3465. patient and don't send him questions about the copy you got from the
  3466. archives.
  3467.  
  3468. Thanks!
  3469.  
  3470. Mark
  3471. 
  3472. 
  3473. Path: ucivax!gateway
  3474. From: nick@dcs.ed.ac.uk (Nick Rothwell)
  3475. Subject: XCMD/XFCN calling conventions
  3476. Message-ID: <9208241101.aa05411@dcs.ed.ac.uk>
  3477. Newsgroups: fa.think-c
  3478. Lines: 10
  3479. Date: 24 Aug 92 10:06:19 GMT
  3480.  
  3481. Could some kind soul provide a quick description of what XCMD's and XFCN's
  3482. look like in terms of source? I want to add some externals to the
  3483. MicroPhone II scripting system, but there's no information about the
  3484. calling conventions. I assume they're just A4-global code resources with
  3485. pascal argument passing, but I don't know anything more than that. A more
  3486. complex question is how to generate and return strings into MicroPhone II,
  3487. but I'd better ask SVC tech support directly about that...
  3488.  
  3489. Nick.
  3490.  
  3491. 
  3492. 
  3493. Path: ucivax!gateway
  3494. From: rex@sics.se (Rolf Staflin)
  3495. Subject: XCMD/XFCN calling conventions
  3496. Message-ID: <9208241127.AA15112@nancarrow.sics.se>
  3497. In-Reply-To: Nick Rothwell's message of 24 Aug 92 10:06:19 GMT <9208241101.aa05411@dcs.ed.ac.uk>
  3498. Newsgroups: fa.think-c
  3499. Reply-To: rex@sics.se
  3500. Lines: 16
  3501. Date: 24 Aug 92 11:27:52 GMT
  3502.  
  3503.  
  3504. >From: Nick Rothwell <nick@dcs.ed.ac.uk>
  3505. >Newsgroups: fa.think-c
  3506. >Date: 24 Aug 92 10:06:19 GMT
  3507. >
  3508. >Could some kind soul provide a quick description of what XCMD's and XFCN's
  3509. >look like in terms of source?
  3510.  
  3511.   I have no idea, but please let me know if you get any good answers (if
  3512. you summarize to think-c, I'll get it that way)
  3513.   Thanks in advance and good luck!
  3514. /Rex
  3515. ---------
  3516. Rolf Staflin              SnailMail: SICS, Box 1263, S-164 28 KISTA, Sweden
  3517. Email: rex@sics.se        Phone: +46 8 752 15 67  Telex: 812 6154 7038 SICS
  3518. Telefax: +46 8 751 72 30  Voice: "Vakna, Roffe!"  Mizar: >greet Zarquon
  3519. 
  3520. 
  3521. Path: ucivax!gateway
  3522. From: rex@sics.se (Rolf Staflin)
  3523. Subject: Speeding up the graphics...
  3524. Message-ID: <9208241424.AA16274@nancarrow.sics.se>
  3525. In-Reply-To: Rolf Staflin's message of Mon, 24 Aug 92 13:27:41 +0200 <9208241127.AA15112@nancarrow.sics.se>
  3526. Newsgroups: fa.think-c
  3527. Reply-To: rex@sics.se
  3528. Lines: 26
  3529. Date: 24 Aug 92 14:24:39 GMT
  3530.  
  3531.  
  3532.   (Sorry about my last post - didn't see the CC field (again).)
  3533. Anyway, I've been meaning to ask this for quite a while, but I suspected it
  3534. might be done already.
  3535.  
  3536.   Do you know any (safe) ways to improve graphics performance under system 6?
  3537. I'm writing a game (lunar lander style with variations) on my old Plus, and
  3538. I'm having trouble with the frame rate. I've been doing odd Mac hacks for the
  3539. last three years, so I'm fairly familiar with the OS and toolbox, but I
  3540. have only read I.M. I-IV, and they don't give that much advice in the
  3541. matter. Games like Crystal Quest and Continuum manage to get quite a lot of
  3542. performance out of the Plus, but my program bogs down with only two or
  3543. three "sprites". Somebody spoke of using waitNextEvent() in stead of
  3544. GetNextEvent() -- is that a good way to gain performance? CopyBits is
  3545. pretty slow -- do I have to write my own routines for bitmaps (I've started
  3546. on a poor man's CopyBits in assembler, but I haven't worked on it since
  3547. last christmas)?
  3548.   All input along these lines would be greatly appreciated. I'm thinking of
  3549. compiling some sort of document with speed hints for the archives. Has this
  3550. been done already? I'll summarize here, so e-mail me any responses
  3551. (remember the CC field :-)).
  3552. /Rex
  3553. ---------
  3554. Rolf Staflin              SnailMail: SICS, Box 1263, S-164 28 KISTA, Sweden
  3555. Email: rex@sics.se        Phone: +46 8 752 15 67  Telex: 812 6154 7038 SICS
  3556. Telefax: +46 8 751 72 30  Voice: "Vakna, Roffe!"  Mizar: >greet Zarquon
  3557. 
  3558. 
  3559. Path: ucivax!gateway
  3560. From: fleabag@athena.mit.edu
  3561. Subject: sending a 'writ' appleevent
  3562. Message-ID: <9208250200.AA13593@e40-008-6.MIT.EDU>
  3563. Newsgroups: fa.think-c
  3564. Lines: 23
  3565. Date: 25 Aug 92 02:01:13 GMT
  3566.  
  3567.  
  3568.  
  3569. hello folks,
  3570.  
  3571. i'm trying to find a way to send a "Force Write" message to another
  3572. application. that is, i want to send someone a 'writ' event (class 'sect')
  3573. to force it to update a publisher, to which i subscribe. it's a common
  3574. appleEvent which many apps use, but only when Apple sends it.  for
  3575. my app to send it involves one problem: getting the right value
  3576. for the sectionHandle which i want published.
  3577.  
  3578. if i send the 'writ' event with my copy of the sectionHandle, the other
  3579. app doesn't find a match for it, since we have different copies of the
  3580. information.  so how can i get a copy of its sectionHandle? or, how
  3581. else can i get it to publish NOW!?
  3582.  
  3583. i can assume that the other app is running on the same machine, by the
  3584. way.
  3585.  
  3586. thanks for any help,
  3587. :jeff bellsey
  3588. fleabag@athena.mit.edu
  3589.  
  3590. 
  3591. 
  3592. Path: ucivax!gateway
  3593. From: nick@dcs.ed.ac.uk (Nick Rothwell)
  3594. Subject: ANSI-A4, ANSI-small
  3595. Message-ID: <9208261206.aa05361@dcs.ed.ac.uk>
  3596. Newsgroups: fa.think-c
  3597. Lines: 9
  3598. Date: 26 Aug 92 11:10:30 GMT
  3599.  
  3600. The TC5 manual says that ANSI-A4 is a subset of ANSI-small since file
  3601. operations aren't available in an A4-globals library (or words to that
  3602. effect). Is there a reason for this? I'd like to do some file munging in
  3603. XCMDs/XFCNs, and have built myself an A4 ANSI-small for that reason. Why
  3604. would fopen(), fclose() and the like not work? (I haven't tried it yet,
  3605. since I still haven't figured out the XFCN calling conventions fully...)
  3606.  
  3607. Nick.
  3608.  
  3609. 
  3610. 
  3611. Path: ucivax!gateway
  3612. From: vthrc@mailbox.uq.oz.au (Danny Thomas)
  3613. Subject: Re: ANSI-A4, ANSI-small
  3614. Message-ID: <9208261620.aa10636@q2.ics.uci.edu>
  3615. Newsgroups: fa.think-c
  3616. Lines: 143
  3617. Date: 26 Aug 92 23:20:12 GMT
  3618.  
  3619. Nick Rothwell <nick@dcs.ed.ac.uk> writes:
  3620. >The TC5 manual says that ANSI-A4 is a subset of ANSI-small since file
  3621. >operations aren't available in an A4-globals library (or words to that
  3622. >effect). Is there a reason for this? I'd like to do some file munging in
  3623. >XCMDs/XFCNs, and have built myself an A4 ANSI-small for that reason. Why
  3624. >would fopen(), fclose() and the like not work? (I haven't tried it yet,
  3625. >since I still haven't figured out the XFCN calling conventions fully...)
  3626. >
  3627. >Nick.
  3628.  
  3629.  
  3630. Hello Nick, to repost a reply I sent here a month ago; I think the recipe
  3631. that follows is fairly accurate in what I did with a multi-segment code
  3632. resource for an Igor XOP (eXternal OPeration, analagous to HC XCMD/XFCNs
  3633. but I don't know how the interface compares), but I would like to hear how
  3634. other people go, plus any other comments:
  3635.  
  3636. cheers,
  3637. X500: @c=AU [I'm about to update VTHRC entries, soon...]
  3638.        @o=University of Queensland
  3639.         @ou=Physiology and Pharmacology Department
  3640.          @ou=Vision Touch and Hearing
  3641.           @cn=Danny Thomas
  3642.            @rfc822Mailbox=vthrc@cc.uq.oz.au
  3643.  
  3644.  
  3645. [repost follows]
  3646.  
  3647. Zach Kessin <zkessin@chaos.cs.brandeis.edu> writes
  3648. >Is there a way to use the ansi file operstions fprinf(), fopen() etc
  3649. >in a code resource? Better yet a way to get a fake prinf() that would
  3650. >send output to a text buffer?
  3651. >
  3652. >I think I could fake it if I had to...
  3653. >                            ...But I'd rather not have to.
  3654.  
  3655. well Zach, I recently went through this in writing an XOP (external module)
  3656. for the Igor graphing/analysis program. In my case there were several other
  3657. ANSI facilities I wanted to use (eg strftime()) which amounted to rather
  3658. more work than simply faking fopen() etc. To quote from the comments I
  3659. wrote at the time:
  3660.  
  3661. /*
  3662.  *             NOTES ON THINK C ANSI LIBRARY IN XOPs
  3663.  *
  3664.  *  ANSI A4 is missing quite a few ANSI functions, perhaps because they
  3665.  *  aren't needed by most things you do in the A4 world, but with some of
  3666.  *  them it isn't as simple as just including the file in the project:
  3667.  *    in the case of time.c, it simply has arrays of strings with
  3668.  *    an initializer of literal strings constants. These are OK in
  3669.  *    a single-segment code resource, but not in a multi-segment project.
  3670.  *    The workaround is to use a function to perform the initialization.
  3671.  *
  3672.  *  PROBLEMS WITH STDIO FUNCTIONS
  3673.  *  have to include at least
  3674.  *    alloc, fread, fseek, getc, iomisc, stdio
  3675.  *  the FILE structs are allocated statically, but the buffers are
  3676.  *    malloc'd and free'd by fclose() and other functions. It is
  3677.  *    important that the buffers are free'd upon exit from the XOP
  3678.  *    including premature panic exits.
  3679.  *  I think malloc should be OK with CODE resources though they
  3680.  *    can't be used from interrupt routines, such as drivers
  3681.  *  my approach is to remove the _atexit_stdio() function register
  3682.  *  and and move the stdio_exit() call to the CLEANUP message below.
  3683.  */
  3684.  
  3685. //  time.c modified because it had static string initialization
  3686. //  so this routine needs to be called before using ANY ANSI time stuff!!
  3687. void  init_time_routines(void);
  3688. //  in the THINK ANSI stdio library, this routine was registered
  3689. //  as an at_exit function. This was causing a problem, see notes below.
  3690. void  stdio_exit(void);
  3691.  
  3692.  
  3693.  
  3694.      *=*=*=*=*=*=*=*=*=*=*=* RECIPE *=*=*=*=*=*=*=*=*=*=*=*=
  3695.  
  3696. make a copy of time.c called my_ANSI_time.c and place this conditional
  3697. around the definitions of day/month names already there (or simply replace
  3698. them)
  3699.  
  3700. #if 1
  3701.  
  3702. static char *dayname[7];  //  had string initializers
  3703. static char *monthname[12];  //  had string initializers
  3704.  
  3705. void  init_time_routines(void);  //  new function
  3706.  
  3707. void  init_time_routines(void)
  3708. {
  3709.     dayname[0] = "Sunday";     dayname[1] = "Monday";    dayname[2] =
  3710. "Tuesday";
  3711.     dayname[3] = "Wednesday";  dayname[4] = "Thursday";  dayname[5] =
  3712. "Friday";
  3713.     dayname[6] = "Saturday";
  3714.     monthname[0]  = "January";   monthname[1] = "February";
  3715.     monthname[2]  = "March";     monthname[3] = "April";
  3716.     monthname[4]  = "May";       monthname[5]  = "June";
  3717.        monthname[6]  = "July";       monthname[7]  = "August";
  3718.     monthname[8]  = "September";     monthname[9] = "October";
  3719.     monthname[10] = "November";   monthname[11] = "December";
  3720. }
  3721.  
  3722. #else
  3723.  
  3724.  
  3725. ... proprietary Symantec code
  3726.  
  3727.  
  3728. #endif
  3729.  
  3730. so at the start of your code YOU will have to call init_time_routines() to
  3731. initialise the month names.
  3732.  
  3733.  
  3734.  
  3735. make a copy of fopen.c called my_ANSI_fopen.c
  3736.  
  3737. Comment out the call to __atexit_stdio() at the end of __open()
  3738. Excise the "static" qualifier on the prototype declaration at the top of
  3739. the file, as well as the actual function definition of stdio_exit(). This
  3740. means that at the end of your program YOU will have to explicitly call
  3741. stdio_exit() to clean up the open files.
  3742. NB check comment block above, the cleanup has to be done on premature exits
  3743. too! (which was why THINK at_exit() registered the function)
  3744.  
  3745. In my case I made up a code-resource project with the following unmodified
  3746. THINK modules and built it as a library
  3747. arith.c, atoi.c, bufio.c, ctype.c, errno.c, fwrite.c, mem.c, printf.c,
  3748. scanf.c, stdio.c, str.c, strn.c & ungetc.c
  3749. PS on reflection, maybe this was the original THINK A4 library?
  3750.  
  3751. In the actual project for my XOP I included this library (8026 bytes) plus
  3752. alloc.c, fread.c, fseek.c, getc.c, iomisc.c my_ANSI_fopen.c &
  3753. my_ANSI_time.c
  3754. Mind you these could have been compiled in a second library.
  3755.  
  3756.  
  3757. That's all that I seem to have written down. All I know is that it seemed
  3758. to work for me but would be grateful to hear of other comments notably why
  3759. the at_exit() stuff didn't work. I believe MPW doesn't have the same
  3760. restrictions on multi-segment A4 stuff as THINK does.
  3761.  
  3762. 
  3763. 
  3764. Path: ucivax!gateway
  3765. From: walshag@hermes.bc.edu (WALSHAG)
  3766. Subject: ModalDialog Abuse...
  3767. Message-ID: <9208261650.aa13989@q2.ics.uci.edu>
  3768. Newsgroups: fa.think-c
  3769. Lines: 27
  3770. Date: 26 Aug 92 23:50:12 GMT
  3771.  
  3772. Let me first say:
  3773.    I *know* I shouldn't be doing this.
  3774.    I should be using the Window Manager instead.
  3775.    I have read Tech. Note #203.
  3776.  
  3777. however....
  3778.  
  3779. I must have a movable dialog in a specific situation, and (for the
  3780. time being) it can not be a movable-modal.   I am using a custom
  3781. filter procedure with ModalDialog, where I need to be sure that a
  3782. "slice of the processing pie" is given to other applications.  This
  3783. is necessary because apps in the background must have an opportunity
  3784. to update the area my dialog has been dragged over.
  3785.  
  3786. Currently, my dialog erases all underlying graphics.   My dialog is used in an
  3787. FKEY, not within an application.  This seems to complicate things.
  3788.  
  3789. At one point I had solved this, but that was some time ago and I can
  3790. no longer find the code.  Now I'm kicking myself...
  3791.  
  3792. Does anyone have suggestions?  I am under the gun to finish this and
  3793. would appreciate any help.
  3794.  
  3795. many thanks,
  3796. Aaron Walsh
  3797. walshag@bcvms.bc.edu
  3798.  
  3799. 
  3800. 
  3801. Path: ucivax!gateway
  3802. From: walshag@hermes.bc.edu (WALSHAG)
  3803. Subject: Pixel-editor source?
  3804. Message-ID: <9208261721.aa10977@Paris.ics.uci.edu>
  3805. Newsgroups: fa.think-c
  3806. Lines: 18
  3807. Date: 27 Aug 92 00:58:01 GMT
  3808.  
  3809.  
  3810. I am going to be creating a pixel-editor, one that can create a color image to
  3811. be saved as a pixel pattern (ppat).   Since I'll be creating the editor from
  3812. scratch (ugh), I would be like at least the skeleton of an existing one to
  3813. build upon.
  3814.  
  3815. Last I heard there was source to a color icon editor on MouseHole (MacTutor's
  3816. BBS).  I just tried to connect, but the number is in the process of being
  3817. changed so I'm out of luck!
  3818.  
  3819. Does anyone have  C source (procedural or TCL) for a color pixel-editor of any
  3820. type, which I might augment for my own use?
  3821.  
  3822.  
  3823. I would appreciate any leads,
  3824.  
  3825. Aaron Walsh
  3826. walshag@bcvms.bc.edu
  3827. 
  3828. 
  3829. Path: ucivax!gateway
  3830. From: nick@dcs.ed.ac.uk (Nick Rothwell)
  3831. Subject: Re: ANSI-A4, ANSI-small
  3832. Message-ID: <9208271124.aa25388@dcs.ed.ac.uk>
  3833. Newsgroups: fa.think-c
  3834. Lines: 13
  3835. Date: 27 Aug 92 10:28:44 GMT
  3836.  
  3837. Needless to say, I didn't catch this thread a month ago, since I didn't
  3838. think I'd be trying to do A4-global file I/O at any stage. I'll try to keep
  3839. my thing single-segment, but it looks as if I still have to deal with exit
  3840. conditions properly. I'll have a look over your code: ta.
  3841.  
  3842. I'd dispense with the ANSI I/O modules and do it all with file manager
  3843. calls, except that MicroPhone II is going to deliver entire path names to
  3844. me, and I don't think FSOpen() and the like will take full path names. The
  3845. easiest way might be to lift the path name resolution code out of
  3846. ANSI-small and do it myself, just using the File Manager...
  3847.  
  3848. Nick.
  3849.  
  3850. 
  3851. 
  3852. Path: ucivax!gateway
  3853. From: C2MXBAR@fre.towson.edu (AARON BARNETT)
  3854. Subject: Pixel-editor source? me too.
  3855. Message-ID: <01GO2UV2FVK2935KE9@TOE.TOWSON.EDU>
  3856. Content-transfer-encoding: 7BIT
  3857. MIME-version: 1.0
  3858. Newsgroups: fa.think-c
  3859. X-VMS-To: TOE::IN%"think-c@ics.uci.edu"
  3860. Lines: 7
  3861. Date: 27 Aug 92 18:16:26 GMT
  3862. X-Envelope-to: think-c@ics.uci.edu
  3863.  
  3864. hey fellas,
  3865.   im interested in pixel editor code also.  id really like to get that
  3866. color icon editor mentioned in the original note.  thats closer to what
  3867. i need.
  3868.  
  3869. thanks
  3870.  
  3871. 
  3872. 
  3873. Path: ucivax!gateway
  3874. From: inei@dcs.gla.ac.uk (inei)
  3875. Subject: Pointer arithmetic evaluation bug in THINK C?
  3876. Message-ID: <9208271635.AA27532@hawaii.dcs.gla.ac.uk>
  3877. Newsgroups: fa.think-c
  3878. Lines: 59
  3879. Date: 28 Aug 92 08:37:49 GMT
  3880.  
  3881.  
  3882. Given the following program:
  3883.  
  3884. char    line[] = "Hello";
  3885. main()
  3886. {
  3887.         char    *cp1 = line;
  3888.         char    *cp2 = &line[4];
  3889.         int             len = cp2 - cp1;
  3890.  
  3891.         printf ("diff = %d\n", cp2 - cp1);
  3892.         printf ("len = %d\n", len);
  3893. }
  3894.  
  3895. I get the following output from THINK C:
  3896.  
  3897. diff = 0
  3898. len = 4
  3899.  
  3900. but the following from my SUN:
  3901.  
  3902. diff = 4
  3903. len = 4
  3904.  
  3905. Take another example - a restatement of K&R's book (page 98):
  3906.  
  3907. mystrlen (s)
  3908.         char    *s;
  3909. {
  3910.         char    *p = s;
  3911.  
  3912.         while (*p != '\0')
  3913.                 p++;
  3914.         printf ("%d\n", p-s);
  3915.         return (p-s);
  3916. }
  3917.  
  3918. char    line[] = "hello";
  3919. main()
  3920. {
  3921.         printf ("length of line: %d\n", mystrlen(line));
  3922. }
  3923.  
  3924. Output from THINK C:
  3925.  
  3926. 0
  3927. length of line: 5
  3928.  
  3929. Output from UNIX:
  3930.  
  3931. 5
  3932. length of line: 5
  3933.  
  3934. Has anyone encountered this problem?  Is there a patch beyond 5.0.2?
  3935.  
  3936. Mail:  Nick Nei, Computing Science Dept.,
  3937.        Glasgow Univ., 17 Lilybank Gardens,
  3938.        Glasgow G12 8QQ, UK.  Tel: (041) 339 8855 x 5457
  3939. ARPA:  inei%uk.ac.glasgow.dcs@nsfnet-relay.ac.uk USENET: inei@cs.glasgow.uucp
  3940. 
  3941. 
  3942. Path: ucivax!gateway
  3943. From: inei@dcs.gla.ac.uk (inei)
  3944. Subject: PBUnmountVol and UnmountVol problem...
  3945. Message-ID: <9208271643.AA27539@hawaii.dcs.gla.ac.uk>
  3946. Newsgroups: fa.think-c
  3947. Lines: 19
  3948. Date: 28 Aug 92 08:37:56 GMT
  3949.  
  3950.  
  3951. Basically,
  3952.  
  3953. If I have file-sharing on,
  3954.  
  3955.     UnmountVol ("\pvolume:", 0);
  3956.  
  3957. fails and returns -47.  Seasoned mac users will also remember that with
  3958. file-sharing enabled, you cannot change volume names.
  3959.  
  3960. If I don't have file-shring on, UnmountVol() and PBUnmountVol() works
  3961. fine.
  3962.  
  3963. Can anyone help?
  3964.  
  3965. Mail:  Nick Nei, Computing Science Dept.,
  3966.        Glasgow Univ., 17 Lilybank Gardens,
  3967.        Glasgow G12 8QQ, UK.  Tel: (041) 339 8855 x 5457
  3968. ARPA:  inei%uk.ac.glasgow.dcs@nsfnet-relay.ac.uk USENET: inei@cs.glasgow.uucp
  3969. 
  3970. 
  3971. Path: ucivax!gateway
  3972. From: nick@dcs.ed.ac.uk (Nick Rothwell)
  3973. Subject: Re: Pointer arithmetic evaluation bug in THINK C?
  3974. Message-ID: <9208281134.aa03996@dcs.ed.ac.uk>
  3975. Newsgroups: fa.think-c
  3976. Lines: 25
  3977. Date: 28 Aug 92 11:05:44 GMT
  3978.  
  3979. >char    line[] = "Hello";
  3980. >main()
  3981. >{
  3982. >        char    *cp1 = line;
  3983. >        char    *cp2 = &line[4];
  3984. >        int             len = cp2 - cp1;
  3985. >
  3986. >        printf ("diff = %d\n", cp2 - cp1);
  3987. >        printf ("len = %d\n", len);
  3988. >}
  3989. >
  3990. >I get the following output from THINK C:
  3991. >
  3992. >diff = 0
  3993. >len = 4
  3994.  
  3995. Erm, hmm, thinks...
  3996.  
  3997. BING! "cp2 - cp1" is a long. "len" is an int. The first printf is bogus
  3998. without a "%ld".
  3999.  
  4000. What prize have I won? :-)
  4001.  
  4002. Nick.
  4003.  
  4004. 
  4005. 
  4006. Path: ucivax!gateway
  4007. From: potts@itl.itd.umich.edu (Paul Potts)
  4008. Subject: Pointer arithmetic evaluation bug in THINK C?
  4009. Message-ID: <9208281445.AA00292@itl.itd.umich.edu>
  4010. Newsgroups: fa.think-c
  4011. Lines: 33
  4012. Date: 28 Aug 92 14:46:19 GMT
  4013.  
  4014.  
  4015. This isn't a bug. Your code is making the non-portable assumption that the
  4016. sizeof (int) == sizeof (char*)
  4017.  
  4018. Suppose you have:
  4019.  
  4020.         char    *cp1 = line;
  4021.         char    *cp2 = &line[4];
  4022.         int             len = cp2 - cp1;
  4023.  
  4024.         printf ("diff = %d\n", cp2 - cp1);
  4025.         printf ("len = %d\n", len);
  4026.  
  4027. Where:
  4028.  
  4029. cp1 = 0x5555AAA0
  4030. cp2 = 0x5555AAA4
  4031.  
  4032. len = 0x5555 - 0x5555
  4033.  
  4034. I'm willing to bet that this is the problem.
  4035.  
  4036. The workaround:  either use the long type to do your pointer arithmetic,
  4037. or set the option int = 4 bytes in THINK C, and rebuild the libraries
  4038. (you will have to rebuild the ANSI library).
  4039.  
  4040. I am willing to bet this might be the problem. In the second case, the
  4041. problem might be that you are using the %d specifier to print a long value,
  4042. when it expects an int; in UNIX they are generally the same. Give this a
  4043. shot (and let me know if I'm totally off base).
  4044.  
  4045. -Paul Potts-
  4046. potts@itl.itd.umich.edu
  4047. 
  4048. 
  4049. Path: ucivax!gateway
  4050. From: nagel@cigna.uucp ("Mark D. Nagel")
  4051. Subject: ADMIN: problems with new ftp daemon on ftp.ics.uci.edu
  4052. Message-ID: <25613.715013504@cigna.com>
  4053. Newsgroups: fa.think-c
  4054. Reply-To: think-c-request@ics.uci.edu
  4055. Organization: CIGNA FIRST, Irvine, CA
  4056. Lines: 9
  4057. Date: 28 Aug 92 15:34:11 GMT
  4058. Phone: (714) 727-4242
  4059.  
  4060. Apparently there have been a number of people having troubles
  4061. getting through to the archives on ftp.ics.uci.edu.  The new daemon
  4062. they installed there seems to be timing out when attempting to do a
  4063. reverse name lookup for the connecting host.  I've spoken with the
  4064. support staff there and they are attempting to find a solution.  If
  4065. you are having problems, please be patient; I'll stay on top of it
  4066. until they find some way of making it work properly...
  4067.  
  4068. Mark
  4069. 
  4070. 
  4071. Path: ucivax!gateway
  4072. From: C2MXBAR@fre.towson.edu (aaron barnett)
  4073. Subject: #include<QDOffScreen.h>
  4074. Message-ID: <01GO48FM12GI935MP8@TOE.TOWSON.EDU>
  4075. Content-transfer-encoding: 7BIT
  4076. MIME-version: 1.0
  4077. Newsgroups: fa.think-c
  4078. X-VMS-To: TOE::IN%"think-c@ics.uci.edu"
  4079. Lines: 1
  4080. Date: 28 Aug 92 17:55:17 GMT
  4081. X-Envelope-to: think-c@ics.uci.edu
  4082.  
  4083. where do i find documentation on this and other non-standard libs?
  4084. 
  4085. 
  4086. Path: ucivax!gateway
  4087. From: williamssp@gtewd.mtv.gsc.gte.com (Steve Williams)
  4088. Subject: RE: Pointer arithmetic bug in THINK C?
  4089. Message-ID: <0095FC49.39770000.3959@GTEWD>
  4090. Newsgroups: fa.think-c
  4091. Reply-To: williamssp@gtewd.mtv.gsc.gte.com
  4092. Lines: 106
  4093. Date: 28 Aug 92 17:58:22 GMT
  4094.  
  4095. Nick Nei asked inei@dcs.gla.ac.uk
  4096.  
  4097. >>> Given the following program:
  4098. >>>
  4099. >>> char    line[] = "Hello";
  4100. >>> main()
  4101. >>> {
  4102. >>>         char    *cp1 = line;
  4103. >>>         char    *cp2 = &line[4];
  4104. >>>         int             len = cp2 - cp1;
  4105. >>>
  4106. >>>         printf ("diff = %d\n", cp2 - cp1);
  4107. >>>         printf ("len = %d\n", len);
  4108. >>> }
  4109. >>>
  4110. >>> I get the following output from THINK C:
  4111. >>>
  4112. >>> diff = 0
  4113. >>> len = 4
  4114. >>>
  4115. >>> but the following from my SUN:
  4116. >>>
  4117. >>> diff = 4
  4118. >>> len = 4
  4119. >>>
  4120. >>> Has anyone encountered this problem?  Is there a patch beyond 5.0.2?
  4121.  
  4122. Nick Rothwell <nick@dcs.ed.ac.uk> responds:
  4123.  
  4124. >> BING! "cp2 - cp1" is a long. "len" is an int. The first printf is bogus
  4125. >> without a "%ld".
  4126. >>
  4127. >> What prize have I won? :-)
  4128.  
  4129. Paul Potts <potts@itl.itd.umich.edu> adds:
  4130.  
  4131. > This isn't a bug. Your code is making the non-portable assumption that the
  4132. > sizeof (int) == sizeof (char*)
  4133.  
  4134.  
  4135. Neither of these two explanations is entirely correct in an ANSI C compiler,
  4136. although Nick Rothwell has pointed out what happened in THINK C.  Paul's answer
  4137. is misleading, because what matters is not whether sizeof(int) ==
  4138. sizeof(char*), but rather what variable type is required to hold a difference
  4139. of two pointers (which could be different than that required to hold an int or
  4140. a pointer).
  4141.  
  4142. In ANSI C, the difference between to pointers (i.e., the value of (cp2 - cp1)
  4143. in the first example) is defined to have type 'ptrdiff_t', which is basically
  4144. like 'size_t', except that it must be signed.  The difference between two
  4145. pointers is *ALWAYS* the number of elements between the objects (which is why
  4146. you cannot take the difference of two 'void *' pointers, and also why it is
  4147. illegal to subtract two pointers to different types).
  4148.  
  4149. int main (int argc, char * argv)
  4150. {
  4151.   float        array[10];
  4152.   float *    fp1 = &array[0];
  4153.   float *    fp2 = &array[1];
  4154.   char *    cp1 = &array[0];
  4155.   char *    cp2 = &array[1];
  4156.  
  4157.   printf ("%ld\n", (long) (fp2 - fp1));  // will print '1'
  4158.   printf ("%ld\n", (long) (cp2 - cp1));  // should print sizeof(float) usually 4
  4159.   printf ("%ld\n", (long) (cp2 - fp1));     // illegal, should not compile
  4160. }
  4161.  
  4162. The trouble is that after having gone to all the trouble to define that pointer
  4163. differences are of type ptrdiff_t, the ansi standard does not require that
  4164. ptrdiff_t be the same as long, nor did they define a printf format specifier
  4165. for printing a ptrdiff_t or a size_t.
  4166.  
  4167. THINK C is an ANSI compliant compiler (finally) but it uses 16-bit 'int'
  4168. variables by default.  'size_t' is 'unsigned long' and 'ptrdiff_t' is 'long'
  4169. no matter how the "4-byte ints" compiler option is set.  Basically Nick Nei's
  4170. original code gets viewed by the compiler as:
  4171.  
  4172. char    line[] = "Hello";
  4173. main()
  4174. {
  4175.   char *    cp1 = line;
  4176.   char *    cp2 = &line[4];
  4177.   int           len = cp2 - cp1;
  4178.   ptrdiff_t    dummy1 = cp2 - cp1;
  4179.  
  4180.   printf ("diff = %d\n", dummy1);
  4181.   printf ("len = %d\n", len);
  4182. }
  4183.  
  4184. And since ptrdiff_t is the same as long, you can see that the %d format
  4185. specifier needs to be %ld (Nick Rothwell wins that prize).  The zero that THINK
  4186. C prints is really the high 16-bits of the 32-bit word.  Your SUN probably
  4187. still does not have an ANSI C compiler, and like most UNIX C compilers, makes
  4188. the assumption that 'int' is the same as 'long', so you can get away with
  4189. writing some amazingly unportable C.  UNIX C code is peppered with things like:
  4190.  
  4191.     long    num_of_things;
  4192.  
  4193.     printf ("There are %d things\n", num_of_things);
  4194.  
  4195. This kind of code breaks on almost any machine where sizeof(int) !=
  4196. sizeof(long).  Worse things happen with pointers, because most UNIX C compilers
  4197. let you get away with the assumption that sizeof(int) == sizeof(void*).
  4198.  
  4199. Hope this explanation helps:
  4200. Steve Williams
  4201. 
  4202. 
  4203. Path: ucivax!gateway
  4204. From: SCHENKL@vax.cs.hscsyr.edu
  4205. Subject: SFGetDirectory on FKEY
  4206. Message-ID: <920828155347.208020c4@vax.cs.hscsyr.edu>
  4207. Newsgroups: fa.think-c
  4208. Lines: 3
  4209. Date: 28 Aug 92 19:56:55 GMT
  4210. X-Vmsmail-To: SMTP%"think-c@ics.uci.edu"
  4211.  
  4212. I tried to use a standard file box to get a directory in an FKEY and it
  4213. bombed on me... any ideas why? (ie: I'm hoping it's buggy code...)
  4214.  
  4215. 
  4216. 
  4217. Path: ucivax!gateway
  4218. From: vthrc@mailbox.uq.oz.au (Danny Thomas)
  4219. Subject: RE: Pointer arithmetic bug in THINK C?
  4220. Message-ID: <9208281512.aa04405@q2.ics.uci.edu>
  4221. Newsgroups: fa.think-c
  4222. Lines: 39
  4223. Date: 28 Aug 92 22:12:54 GMT
  4224.  
  4225. two points:
  4226. I wish more compilers would verify format strings against the variable
  4227. argument list in printf/scanf functions, both in number and type. This
  4228. should work well since the vast majority of format strings are (I imagine)
  4229. literal constants.
  4230. My preference would be for not enough arguments to rate as a fatal error,
  4231. but type-mismatches or too many arguments to only generate a warning.
  4232. Problems with printf are normally easier to track down because the result
  4233. is usually only too visible, but scanf problems can be more subtle - hands
  4234. up those who have forgotten to pass addresses instead of values!
  4235.     Coincidentally, I'm just finishing up a repackaging of sprintf() and
  4236. sscanf() functionality for the visual, dataflow language Prograph. These
  4237. versions will perform type and arity checking for their inputs, and their
  4238. outputs (including the %n conversion in printf) will generate data values
  4239. of the specified type - being dataflow, you don't have variables to store
  4240. values in.
  4241.  
  4242.  
  4243. As Steve Williams notes, it is disappointing that ANSI did not define
  4244. format conversion operators for the types they invented for portability -
  4245. ptrdiff_t, size_t. One kludgy workaround makes use of literal string
  4246. concatenation:
  4247.  
  4248. #ifdef VAX
  4249. #define PTRDIFF_T_CONV "d"
  4250. #else
  4251. #ifdef MAC
  4252. #define PTRDIFF_T_CONV "ld"
  4253. #endif
  4254. #endif
  4255.  
  4256. ...
  4257.     diff = p1 - p2;
  4258.     printf("pointer difference = %6" PTRDIFF_T_CONV, diff);
  4259. ...
  4260.  
  4261.  
  4262. cheers,
  4263.  
  4264. 
  4265. 
  4266. Path: ucivax!gateway
  4267. From: CHERRY%howard@msscc.med.utah.edu
  4268. Subject: Re: Pointer arithmetic bug in THINK C?
  4269. Message-ID: <036518C1409F001D02@msscc.med.utah.edu>
  4270. Newsgroups: fa.think-c
  4271. X-VMS-To: MSSCC::IN%"think-c@ics.uci.edu"
  4272. Lines: 47
  4273. Date: 29 Aug 92 02:44:19 GMT
  4274. X-Envelope-to: think-c@ics.uci.edu
  4275.  
  4276.  
  4277. Danny Thomas <vthrc@mailbox.uq.oz.au> writes:
  4278.  
  4279. >two points:
  4280. >I wish more compilers would verify format strings against the variable
  4281. >argument list in printf/scanf functions, both in number and type. This
  4282. >should work well since the vast majority of format strings are (I imagine)
  4283. >literal constants.
  4284.  
  4285. The compiler doesn't know anything about printf/scanf (other than what is
  4286. in the #include'd prototypes).  To make it know would be a departure from
  4287. the general philosophy of c ("so what" you may say).  I think it would even
  4288. be a violation of the standard; I should be able to name my own function
  4289. 'printf', see that it gets linked to my code, and pass it anything I want to.
  4290.  
  4291. >As Steve Williams notes, it is disappointing that ANSI did not define
  4292. >format conversion operators for the types they invented for portability -
  4293. >ptrdiff_t, size_t. One kludgy workaround makes use of literal string
  4294. >concatenation:
  4295. >
  4296. >#ifdef VAX
  4297. >#define PTRDIFF_T_CONV "d"
  4298. >#else
  4299. >#ifdef MAC
  4300. >#define PTRDIFF_T_CONV "ld"
  4301. >#endif
  4302. >#endif
  4303. >
  4304. >...
  4305. >    diff = p1 - p2;
  4306. >    printf("pointer difference = %6" PTRDIFF_T_CONV, diff);
  4307. >...
  4308.  
  4309. You don't need to do anything so kludgy.  Just typecast the variable
  4310. whose value is being printed, e.g.:
  4311.  
  4312. ...
  4313.     diff = p1 - p2;
  4314.     printf("pointer difference = %d", (int) diff);
  4315. ...
  4316.  
  4317. which should work on any machine (unless, obviosly, the difference is so large
  4318. that it can't fit into an int).  You could also use %ld and typecast
  4319. to long.
  4320.  
  4321. -Josh Cherry
  4322.  
  4323. 
  4324. 
  4325. Path: ucivax!gateway
  4326. From: potts@itl.itd.umich.edu (Paul Potts)
  4327. Subject: RE: Pointer arithmetic bug in THINK C?
  4328. Message-ID: <9208311234.AA02171@itl.itd.umich.edu>
  4329. Newsgroups: fa.think-c
  4330. Lines: 17
  4331. Date: 31 Aug 92 12:36:06 GMT
  4332.  
  4333.  
  4334. Gentle readers
  4335.  
  4336. Terribly sorry to have "misled" anyone
  4337.  
  4338. (Steve Williams <williamssp@gtewd.mtv.gsc.gte.com> writes:
  4339. >> Paul's answer
  4340. is misleading, because what matters is not whether sizeof(int) ==
  4341. sizeof(char*), but rather what variable type is required to hold a difference
  4342. of two pointers (which could be different than that required to hold an int or
  4343. a pointer).
  4344.  
  4345. For those of you that I "misled," I apologize (dripping sarcasm). For the
  4346. rest of you bright enough not to need Professor William's agonizingly
  4347. detailed explanation of pointers, the differences between them, and the
  4348. types thereof, I hope I was of some help.
  4349.  
  4350. 
  4351. 
  4352. Path: ucivax!gateway
  4353. From: walshag@hermes.bc.edu (WALSHAG)
  4354. Subject: Pixel-editor & 'ppat' resources
  4355. Message-ID: <9208310737.aa04289@q2.ics.uci.edu>
  4356. Newsgroups: fa.think-c
  4357. Lines: 8
  4358. Date: 31 Aug 92 14:37:28 GMT
  4359.  
  4360. For the record, I was unable to find the source to an existing pixel editor.
  4361.  
  4362. Instead I wrote a utility which allows the user to "snap" a section of the
  4363. screen.  This section is converted to my own pixMap, which I then use in the
  4364. creation of a pixPat (which is the structure stored in a 'ppat' resource).
  4365.  
  4366. All is well and good until I try to save my pixPat to disk with AddResource().
  4367. At this point, the resource becomes corrupted & is unreadable.
  4368. 
  4369. 
  4370. Path: ucivax!gateway
  4371. From: walshag@hermes.bc.edu (WALSHAG)
  4372. Subject: Pixel editor & ppat con't
  4373. Message-ID: <9208310752.aa05210@q2.ics.uci.edu>
  4374. Newsgroups: fa.think-c
  4375. Lines: 23
  4376. Date: 31 Aug 92 14:52:31 GMT
  4377.  
  4378. [Sorry for the break in messages.  My habit of command-s to save periodically
  4379. while working backfires in MS-Mail:command-s in MS-Mail is send, not save]
  4380.  
  4381. At any rate....
  4382.  
  4383. The 'ppat' I have saved to disk is now corrupted.  I have tried several things
  4384. to remedy this.  I also tried saving it to a resource other than 'ppat', just
  4385. in case something was awry with the 'ppat' data structure.  No luck.
  4386.  
  4387. I am no stranger to saving custom resources, so this should be straight forward
  4388. & simple.  An easy test to see what I am talking about is to read in an
  4389. existing 'ppat' using either GetResource() or GetPixPat() and  then try to save
  4390. it out as a new one using DetachResource(), AddResource() & WriteResource().
  4391. This approach works fine unless you *change* the pixPat now in memory.  Once
  4392. you try to save out the changed resource, it is once again corrupted.
  4393.  
  4394. Incredibly frustrating, as this project would be done if I could just save  my
  4395. pixPat to disk!
  4396.  
  4397. Any ideas?
  4398.  
  4399. Aaron Walsh
  4400. walshag@bcvms.bc.edu
  4401. 
  4402. 
  4403. Path: ucivax!gateway
  4404. From: potts@itl.itd.umich.edu (Paul Potts)
  4405. Subject: Pointer arithmetic evaluation bug in THINK C?
  4406. Message-ID: <9208311558.AA02384@itl.itd.umich.edu>
  4407. Newsgroups: fa.think-c
  4408. Lines: 109
  4409. Date: 31 Aug 92 16:00:03 GMT
  4410.  
  4411.  
  4412. All right. For clarity's sake, here are the reasons I am angry:
  4413. I originally wrote:
  4414.  
  4415. >This isn't a bug. Your code is making the non-portable assumption that the
  4416. sizeof (int) == sizeof (char*)
  4417.  
  4418. Steve Williams wrote:
  4419.  
  4420. >Paul's answer
  4421. >is misleading, because what matters is not whether sizeof(int) ==
  4422. >sizeof(char*), but rather what variable type is required to hold a difference
  4423. >of two pointers (which could be different than that required to hold an
  4424. >int or a pointer).
  4425.  
  4426. It is potentially unsafe to cast the difference between two pointers
  4427. to an int. ANSI can take care of itself with ptrdiff_t, but it can't
  4428. guard against the assumption made in the first example that the
  4429. difference between the pointers (of type ptrdiff_t) will fit into
  4430. an int. ptrdiff_t must be potentially as large as a generic
  4431. pointer (although, of course, in the first case the difference
  4432. will only be a few bytes). The size of ptrdiff_t is tied to the
  4433. size of a generic pointer. I can conceive of machine architectures
  4434. in which they aren't the same - but on a machine like the Mac,
  4435. they must be.
  4436.  
  4437. However, what do we see down near the end of Steve William's long
  4438. posting?
  4439.  
  4440. >Your SUN probably
  4441. >still does not have an ANSI C compiler, and like most UNIX C compilers, makes
  4442. >the assumption that 'int' is the same as 'long', so you can get away with
  4443. >writing some amazingly unportable C.....
  4444. >
  4445. >Worse things happen with pointers, because most UNIX C compilers
  4446. >let you get away with the assumption that sizeof(int) == sizeof(void*).
  4447.  
  4448. On the Mac, Pointers are all the same size. sizeof (void*) is
  4449. the same as sizeof (char*), so my original statement applies here.
  4450. Surprise! In addition, Williams' explanation that
  4451. "The difference between two pointers is *ALWAYS* the number of
  4452. elements between the objects (which is why you cannot take the
  4453. difference of two 'void *' pointers, and also why it is
  4454. illegal to subtract two pointers to different types)." is correct,
  4455. but needless - in THINK C, the char type is one byte, and so
  4456. the difference between ten chars in memory is the same as the
  4457. difference between two generic pointers that point to memory
  4458. ten bytes apart (although one can't take the difference between
  4459. pointers to void).
  4460.  
  4461. I also wrote:
  4462.  
  4463. >In the second case, the
  4464. >problem might be that you are using the %d specifier to print a long value,
  4465. >when it expects an int; in UNIX they are generally the same. Give this a
  4466. >shot (and let me know if I'm totally off base).
  4467.  
  4468. Williams was enjoying jumping on my initial response so much, that
  4469. he didn't notice this portion of my posting. He added:
  4470.  
  4471. >And since ptrdiff_t is the same as long, you can see that the %d format
  4472. >specifier needs to be %ld (Nick Rothwell wins that prize).  The zero that >THINK C prints is really the high 16-bits of the 32-bit word.
  4473.  
  4474. Thus, I supplied two
  4475. comments which turned out to be somewhat applicable according to
  4476. Williams' own posting: one is ignored, and regarding the other,
  4477. I am just told "Paul's answer is misleading."
  4478. One-upmanship at work; sheer pedantry. Williams is too busy handing
  4479. out prizes to consider that this is an open discussion, and the
  4480. purpose of my posting was to try to provide a couple of useful
  4481. suggestions, not trumpet my knowledge of the innards of C.
  4482.  
  4483. I also received correction from Bradford Castalia, which I will
  4484. accept because it was graciously done. Bradford writes:
  4485.  
  4486. >I'll take you up on your bet! I think you're wrong that in your example
  4487. >you would have:
  4488. >
  4489. >        len = 0x5555 - 0x5555
  4490. >
  4491. >In fact the C language guarantees that the pointer subtraction will
  4492. >give a correct result (I've checked K&R on this).
  4493.  
  4494. And he is right: I was incorrect about the way the conversion would
  4495. take place, maintaining the low-order bits. However, Bradford also
  4496. wrote:
  4497.  
  4498. >You are right about the %d specifier to printf...
  4499.  
  4500. I suspected a possible problem here, because I have had problems
  4501. with printf myself, especially when I was just starting out with
  4502. C. For my IBM-compatible programming work I now use C++, and I'm
  4503. happily using streams, which are type-safe and go much further
  4504. to protect the programmer against possible pitfalls like the
  4505. long-to-int conversion.
  4506.  
  4507. Bradford continues:
  4508.  
  4509. >You lose the bet, but you guessed right in the end. We'll call it a
  4510. >wash ;-)
  4511.  
  4512. Bradford Castalia                      castalia@pirl.lpl.arizona.edu
  4513.  
  4514. Thanks.
  4515.  
  4516. I hope this helps explain why I was somewhat irate in my posting
  4517. earlier today. Please, everyone. This forum is not a competition!
  4518. We are here to help one another. I will also try to be less
  4519. sensitive in the future.
  4520. 
  4521. 
  4522. Path: ucivax!gateway
  4523. From: rc05@gte.com (Ramesh Chandak)
  4524. Subject: Appmaker and THINK C question ?
  4525. Message-ID: <9208312229.AA23881@bunny.gte.com>
  4526. Newsgroups: fa.think-c
  4527. Lines: 11
  4528. Date: 31 Aug 92 22:30:04 GMT
  4529.  
  4530. HI folks,
  4531.  
  4532. I have a question about how to Import PICT resources into Appmaker and
  4533. define them as part of a tool palette that I wish to create for this
  4534. application.  Is there any way I can do this using AppMaker or do I
  4535. have to write my own C code to do it ?
  4536.  
  4537. Is there any public domain source code available that will help me do this ?
  4538. Any help in this regard shall be much appreciated.  Thanx.
  4539.  
  4540. - Ramesh
  4541. 
  4542.